Я пытаюсь получить все родительские и дочерние данные из базы данных с помощью Laravel.Внутри родителя также будут вложенный родитель и ребенок.Это как многоуровневая вещь.Проблема, с которой я сталкиваюсь, заключается в получении всей этой информации с помощью цикла.Ниже приведен мой код.
$totalchild = self::getParentChildren($parent->id);
public function getParentChildren($parent) {
$totalChild = array();
$child = Permission::where('status', 1)->where('parentid', '=', $parent)->pluck('permissionid')->toArray();
$totalChild = $child;
foreach($child as $childs){
$innerChild[] = self::getChildren($childs);
$totalChild = array_push($totalChild, $innerChild);
}
return $totalChild;
}
Ошибка, которую я получаю: «array_push () ожидает, что параметр 1 будет массивом, заданным целым числом».Я понятия не имею, что там пошло не так.По сути, я пытаюсь получить все родительские и дочерние удостоверения под этим одним родительским удостоверением.Спасибо!
РЕДАКТИРОВАТЬ: Пример базы данных, как показано ниже.
id name parentid
1 master 0
2 parent A 1
3 parent B 1
4 child A 2
5 child B 2
6 child C 3
7 child A_A 4
8 child A_B 4
, поэтому предположим, что я хочу получить всех родителей и детей под этим основным идентификатором родителей 1.
ОБНОВЛЕНИЕ КОДАЯ придумал еще один, но я не знаю, почему он возвращает мне только первый слой.Это не вернуло мне всех родителей и детей под ним.
public function getChildren($parent, $tree_string=array()) {
$tree = array();
$tree = Permission::where('status', 1)->where('parentid', $parent)->pluck('permissionid')->toArray();
if(count($tree)>0 && is_array($tree)){
$tree_string=array_merge($tree_string,$tree);
}
foreach ($tree as $key => $value) {
self::getChildren($value, $tree_string);
}
return $tree_string;
}
$totalchild = self::getChildren($parent->id); // returns me the first layer only