diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 55e91284a9..b33faf7c05 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -3,6 +3,8 @@ Yii Framework 2 Change Log 2.0.16 under development ------------------------ + +- Bug #16558: Added cloning `yii\data\ActiveDataProvider::query` property when ActiveDataProvider object is cloned (mgrechanik) - Bug #14901: Fixed trim validation for radio/checkbox button (s1lver) - Bug #16527: Fixed return content for `\yii\widgets\ActiveForm::run()` (carono) - Bug #15826: Fixed JavaScript compareValidator in `yii.validation.js` for attributes not in rules (mgrechanik) diff --git a/framework/data/ActiveDataProvider.php b/framework/data/ActiveDataProvider.php index 32b63e7378..6417bab846 100644 --- a/framework/data/ActiveDataProvider.php +++ b/framework/data/ActiveDataProvider.php @@ -196,4 +196,13 @@ class ActiveDataProvider extends BaseDataProvider } } } + + public function __clone() + { + if (is_object($this->query)) { + $this->query = clone $this->query; + } + + parent::__clone(); + } } diff --git a/tests/framework/data/ActiveDataProviderCloningTest.php b/tests/framework/data/ActiveDataProviderCloningTest.php new file mode 100644 index 0000000000..e4c7adc912 --- /dev/null +++ b/tests/framework/data/ActiveDataProviderCloningTest.php @@ -0,0 +1,34 @@ + $queryFirst + ]); + + $dataProviderSecond = clone $dataProviderFirst; + + $querySecond = $dataProviderSecond->query; + + $this->assertNotSame($querySecond, $queryFirst); + } +} +