Я работаю над рекурсивными отношениями родитель-потомок в laravel и успешно рекурсивно получаю родитель-потомок от eloquent.
У меня проблема, когда у родителя или ребенка нет ребенка, это будетпокажи children: []
в моем json.Я хочу удалить пустой дочерний элемент children: []
.Таким образом, если у родителя или ребенка нет ребенка, children: []
не должно отображаться.Я включу его изображение.
Моя красноречивая модель:
public function allChild () {
return $this->hasMany(self::class, 'parent_id', 'id')->select('id', 'parent_id', 'category_name as label');
}
public function children () {
return $this->allChild()->with('children');
}
Мой контроллер
$categories = CatalogCategories::select('id', 'category_name as label')->where('parent_id', 0)
->with('children')->get();
Результат сейчас
[
{
"id":1,
"label":"Mainan",
"children":[{
"id":4,
"parent_id":1,
"label":"Category shoes",
"children":[{
"id":18,
"parent_id":4,
"label":"test",
"children":[
{
"id":25,
"parent_id":18,
"label":"sub cat tes",
"children":[
{
"id":25,
"parent_id":18,
"label":"sub cat tes",
"children":[]
}
]
},
{
"id":27,
"parent_id":18,
"label":"testtttt 123",
"children":[]
}
]
}]
}]
}
]
результат, который я хочу
[
{
"id":1,
"label":"Mainan",
"children":[{
"id":4,
"parent_id":1,
"label":"Category shoes",
"children":[{
"id":18,
"parent_id":4,
"label":"test",
"children":[
{
"id":25,
"parent_id":18,
"label":"sub cat tes",
"children":[
{
"id":25,
"parent_id":18,
"label":"sub cat tes"
}
]
},
{
"id":27,
"parent_id":18,
"label":"testtttt 123"
}
]
}]
}]
}
]