diff --git a/Database/ActiveQuery.php b/Database/ActiveQuery.php index 273c59e2..94125f39 100644 --- a/Database/ActiveQuery.php +++ b/Database/ActiveQuery.php @@ -218,13 +218,10 @@ class ActiveQuery extends Component */ public function all() { - $data = $this->modelClass::getDb() - ->createCommand($this->queryBuilder()) - ->all(); - - $collect = new Collection($this); - $collect->setModel($this->modelClass); - $collect->setItems($data); + $collect = new Collection($this, + $this->modelClass::getDb()->createCommand($this->queryBuilder())->all() + , $this->modelClass + ); if ($this->asArray) { return $collect->toArray(); } diff --git a/Database/Base/AbstractCollection.php b/Database/Base/AbstractCollection.php index 34edb3c1..510247f8 100644 --- a/Database/Base/AbstractCollection.php +++ b/Database/Base/AbstractCollection.php @@ -37,11 +37,13 @@ abstract class AbstractCollection extends Component implements \IteratorAggregat * * @param $query * @param array $array + * @param null $model */ - public function __construct($query, array $array = []) + public function __construct($query, array $array = [], $model = null) { $this->_item = $array; $this->query = $query; + $this->model = $model; parent::__construct([]); } diff --git a/Database/Collection.php b/Database/Collection.php index e2e4477a..accdc3ba 100644 --- a/Database/Collection.php +++ b/Database/Collection.php @@ -207,7 +207,7 @@ class Collection extends AbstractCollection } $_filters[] = $value; } - return new Collection($this->query, $_filters); + return new Collection($this->query, $_filters, $this->model); } /**