This commit is contained in:
2020-09-08 01:27:36 +08:00
parent 7fca37bb83
commit 6e8c7b0af1
+23 -7
View File
@@ -192,17 +192,12 @@ class Collection extends AbstractCollection
*/
public function filter(array $condition)
{
$_filters = [];
if (empty($condition)) {
return $this;
}
$_filters = [];
foreach ($this as $value) {
$_value = $value;
if ($_value instanceof ActiveRecord) {
$_value = $_value->toArray();
}
$_tmp = array_intersect_key($_value, $condition);
if (count(array_diff_assoc($_tmp, $condition)) > 0) {
if (!$this->filterCheck($value, $condition)) {
continue;
}
$_filters[] = $value;
@@ -210,6 +205,27 @@ class Collection extends AbstractCollection
return new Collection($this->query, $_filters, $this->model);
}
/**
* @param $value
* @param $condition
* @return bool
* @throws Exception
*/
private function filterCheck($value, $condition)
{
$_value = $value;
if ($_value instanceof ActiveRecord) {
$_value = $_value->toArray();
}
$_tmp = array_intersect_key($_value, $condition);
if (count(array_diff_assoc($_tmp, $condition)) > 0) {
return false;
}
return true;
}
/**
* @param $key
* @param $value