This commit is contained in:
2020-09-08 01:09:24 +08:00
parent cbf961c4e7
commit 0cbf083621
4 changed files with 9 additions and 46 deletions
+1 -1
View File
@@ -222,7 +222,7 @@ class ActiveQuery extends Component
->createCommand($this->queryBuilder()) ->createCommand($this->queryBuilder())
->all(); ->all();
$collect = new Collection(); $collect = new Collection($this);
$collect->setModel($this->modelClass); $collect->setModel($this->modelClass);
$collect->setItems($data); $collect->setItems($data);
if ($this->asArray) { if ($this->asArray) {
+5 -1
View File
@@ -27,14 +27,18 @@ abstract class AbstractCollection extends Component implements \IteratorAggregat
/** @var ActiveRecord */ /** @var ActiveRecord */
protected $model; protected $model;
protected $query;
/** /**
* Collection constructor. * Collection constructor.
* *
* @param $query
* @param array $array * @param array $array
*/ */
public function __construct(array $array = []) public function __construct($query, array $array = [])
{ {
$this->_item = $array; $this->_item = $array;
$this->query = $query;
parent::__construct([]); parent::__construct([]);
} }
+3 -3
View File
@@ -187,13 +187,13 @@ class Collection extends AbstractCollection
/** /**
* @param array $condition * @param array $condition
* @return Filters * @return Collection
* @throws * @throws
*/ */
public function filter(array $condition) public function filter(array $condition)
{ {
if (empty($condition)) { if (empty($condition)) {
return new Filters($this); return $this;
} }
$_filters = []; $_filters = [];
foreach ($this as $value) { foreach ($this as $value) {
@@ -207,7 +207,7 @@ class Collection extends AbstractCollection
} }
$_filters[] = $value; $_filters[] = $value;
} }
return new Filters($_filters); return new Collection($this->query, $_filters);
} }
/** /**
-41
View File
@@ -1,41 +0,0 @@
<?php
namespace Database;
/**
* Class Filters
* @package Yoc\db
*/
class Filters
{
private $_filters = [];
/**
* Filters constructor.
* @param $data
*/
public function __construct($data)
{
$this->_filters = $data;
}
/**
* @return Collection
*/
public function get()
{
return new Collection($this->_filters);
}
/**
* @return int
*/
public function count()
{
return count($this->_filters);
}
}