add criteria when fetching node children
This commit is contained in:
parent
e7baa477bb
commit
e0d77dc17e
|
@ -225,12 +225,30 @@ class Node implements EntityInterface
|
|||
/**
|
||||
* @return Collection|Node[]
|
||||
*/
|
||||
public function getChildren(): Collection
|
||||
public function getChildren(array $criteria = []): Collection
|
||||
{
|
||||
if (null === $this->children) {
|
||||
$this->children = new ArrayCollection();
|
||||
}
|
||||
|
||||
if (!empty($criteria)) {
|
||||
$children = new ArrayCollection();
|
||||
|
||||
foreach ($this->children as $child) {
|
||||
$add = true;
|
||||
|
||||
if (isset($criteria['visible']) && $child->getIsVisible() !== $criteria['visible']) {
|
||||
$add = false;
|
||||
}
|
||||
|
||||
if ($add) {
|
||||
$children->add($child);
|
||||
}
|
||||
}
|
||||
|
||||
return $children;
|
||||
}
|
||||
|
||||
return $this->children;
|
||||
}
|
||||
|
||||
|
@ -256,7 +274,7 @@ class Node implements EntityInterface
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function getAllChildren(): ArrayCollection
|
||||
public function getAllChildren(array $criteria = []): ArrayCollection
|
||||
{
|
||||
$children = [];
|
||||
|
||||
|
@ -274,6 +292,14 @@ class Node implements EntityInterface
|
|||
return $a->getTreeLeft() < $b->getTreeLeft() ? -1 : 1;
|
||||
});
|
||||
|
||||
if (!empty($criteria)) {
|
||||
foreach ($children as $key => $child) {
|
||||
if (isset($criteria['visible']) && $child->getIsVisible() !== $criteria['visible']) {
|
||||
unset($children[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new ArrayCollection($children);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue