From 442761ddbbc620f919da06be157b24bf05fe0775 Mon Sep 17 00:00:00 2001 From: Viktor Khokhryakov Date: Thu, 16 Jan 2025 22:57:07 +0400 Subject: [PATCH] Wrap `createCommand` for respecting `\yii\db\ActiveRecord::getDb` --- framework/data/ActiveDataProvider.php | 8 +++++++- tests/framework/data/ActiveDataProviderTest.php | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/framework/data/ActiveDataProvider.php b/framework/data/ActiveDataProvider.php index f254a4aadc4..b79b6fcb54a 100644 --- a/framework/data/ActiveDataProvider.php +++ b/framework/data/ActiveDataProvider.php @@ -119,8 +119,14 @@ public function all($db = null) { return $this->wrappedQuery->populate(parent::all($db)); } + public function createCommand($db = null) + { + $command = $this->wrappedQuery->createCommand($db); + $this->from(['q' => "({$command->getSql()})"])->params($command->params); + return parent::createCommand($command->db); + } }; - $wrapper->select('*')->from(['q' => $this->query]); + $wrapper->select('*'); $wrapper->wrappedQuery = $this->query; $wrapper->emulateExecution = $this->query->emulateExecution; diff --git a/tests/framework/data/ActiveDataProviderTest.php b/tests/framework/data/ActiveDataProviderTest.php index 01302217788..c3dd6688f87 100644 --- a/tests/framework/data/ActiveDataProviderTest.php +++ b/tests/framework/data/ActiveDataProviderTest.php @@ -204,7 +204,6 @@ public function testPaginationWithUnionQuery() $q1 = Item::find()->where(['category_id' => 2])->with('category'); $q2 = Item::find()->where(['id' => [2, 4]]); $provider = new ActiveDataProvider([ - 'db' => $this->getConnection(), 'query' => $q1->union($q2)->indexBy('id'), ]); $pagination = $provider->getPagination();