У меня многоуровневая модель категории, каждая категория может иметь дочерние элементы и родительский элемент в одной таблице (древовидной структуре) в одной и той же sql таблице.
public function childs(){
return $this->hasMany('App\Category', 'parent_id', 'id');
}
public function parent(){
return $this->belongsTo('App\Category', 'parent_id');
}
+---------+---------+------------+
| id |cat_name | parent_id |
+---------+---------+------------+
| 1 | A | NULL |
| 2 | B | NULL |
| 3 | AA | 1 |
| 4 | BB | 2 |
| 5 | AAA | 4 |
+---------+---------+------------+
С моего контроллера я хочу получить все категории с их основной категорией (не родительской категорией), например:
$categories= Category::with('mainCategory')->get();
Желаемый результат
id: 1
cat_name: A
parent_id:null
mainCategory:{}
id: 2
cat_name: B
parent_id:null
mainCategory:{}
id: 3
cat_name: AA
parent_id:1
mainCategory:{
id: 1
cat_name: A
parent_id:NULL
}
id: 4
cat_name: BB
parent_id:2
mainCategory:{
id: 2
cat_name: B
parent_id:NULL
}
id: 5
cat_name: AAA
parent_id:3
mainCategory:{
id: 1
cat_name: AAA
parent_id:NULL
}
Например: категория AAA с id 5 -> mainCat - A
Мне нужна модельная функция, которая возвращает категории и mainCategory для каждой из них, поэтому я могу применить функцию с другого контроллера, а не с CategoryController.