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())
->all();
$collect = new Collection();
$collect = new Collection($this);
$collect->setModel($this->modelClass);
$collect->setItems($data);
if ($this->asArray) {
+5 -1
View File
@@ -27,14 +27,18 @@ abstract class AbstractCollection extends Component implements \IteratorAggregat
/** @var ActiveRecord */
protected $model;
protected $query;
/**
* Collection constructor.
*
* @param $query
* @param array $array
*/
public function __construct(array $array = [])
public function __construct($query, array $array = [])
{
$this->_item = $array;
$this->query = $query;
parent::__construct([]);
}
+3 -3
View File
@@ -187,13 +187,13 @@ class Collection extends AbstractCollection
/**
* @param array $condition
* @return Filters
* @return Collection
* @throws
*/
public function filter(array $condition)
{
if (empty($condition)) {
return new Filters($this);
return $this;
}
$_filters = [];
foreach ($this as $value) {
@@ -207,7 +207,7 @@ class Collection extends AbstractCollection
}
$_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);
}
}