Я хотел бы получить все данные из отношения по идентификатору меню в этом случае. Как я могу это сделать?
Я пробовал поиск в Интернете, но не смог найти похожий случай ... Пожалуйста, помогите ...
Вот мои модели:
Меню
class Menu extends Model
{
protected $fillable = [
'name', 'img', 'status', 'views'
];
public function stores()
{
return $this->belongsToMany(Store::class, 'store_menu');
}
public function categories()
{
return $this->hasMany(Category::class);
}
}
Категория
class Category extends Model
{
protected $fillable = ["img", "title", "description", "status", "menu_id"];
public function items()
{
return $this->hasMany(Item::class);
}
public function menu()
{
return $this->belongsTo(Menu::class, 'menu_id');
}
}
Item
class Item extends Model
{
protected $fillable = [
'name', 'img', 'price', 'status', 'view', 'category_id'
];
public function category()
{
return $this->belongsTo(Category::class, 'category_id');
}
}
Выполнив следующие действия, мне удается получить только категории меню:
$id = $request->menu_id;
$menu = Menu::find($id);
$categories = $menu->categories;
dd(menu);
Текущий результат:
"data": {
"id": 1,
"name": "Menu name",
{
"id": 1,
"title": "Category 1 name",
"menu_id": 1,
},
{
"id": 2,
"title": "Category 1 name",
"menu_id": 1,
},
{
"id": 3,
"title": "Category 1 name",
"menu_id": 1,
}
]
},
Результат, который я хотел бы получить:
"data": {
"id": 1,
"name": "Menu Name",
"categories": [
{
"id": 1,
"title": "Category 1 name",
"menu_id": 1,
"items":[
{
"id": 1,
"name": "Item 1 Name"
},
{
"id": 2,
"name": "Item 2 Name"
},
]
},
{
"id": 2,
"title": "Category 2 name",
"menu_id": 1,
"items":[
{
"id": 1,
"name": "Item 3 Name"
},
{
"id": 2,
"name": "Item 4 Name"
},
]
},
{
"id": 3,
"title": "Category 3 name",
"menu_id": 1,
"items":[
{
"id": 1,
"name": "Item 5 Name"
},
{
"id": 2,
"name": "Item 6 Name"
},
]
}
]
},
Спасибо за помощь.