This commit is contained in:
2020-09-08 00:49:15 +08:00
parent 2f5b3abf47
commit 6bab3c8f1e
3 changed files with 40 additions and 12 deletions
+2 -11
View File
@@ -219,21 +219,12 @@ class ActiveQuery extends Component
public function all()
{
$data = $this->modelClass::getDb()
->createCommand($this->getBuild()->count($this))
->createCommand($this->queryBuilder())
->all();
$collect = new Collection();
$collect->setModel($this->modelClass);
if (empty($data) || !is_array($data)) {
return $this->asArray ? [] : $collect;
}
$_tmp = [];
$model = Snowflake::createObject($this->modelClass);
foreach ($data as $key => $val) {
$_tmp[] = $this->populate(clone $model, $val);
}
$collect->setItems($_tmp);
$collect->setItems($data);
if ($this->asArray) {
return $collect->toArray();
}
+1 -1
View File
@@ -79,7 +79,7 @@ abstract class AbstractCollection extends Component implements \IteratorAggregat
*/
public function getIterator()
{
return new \ArrayIterator($this->_item);
return new CollectionIterator($this->model, $this->_item);
}
/**
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace Database\Base;
use Database\ActiveRecord;
/**
* Class CollectionIterator
* @package Database\Base
*/
class CollectionIterator extends \ArrayIterator
{
/** @var ActiveRecord */
private $model;
public function __construct($model, $array = array(), $flags = 0)
{
$this->model = $model;
parent::__construct($array, $flags);
}
/**
* @return ActiveRecord|mixed
*/
public function current()
{
return $this->model::populate(parent::current());
}
}