在我的菜单控制器中,我有一个方法应该显示指定的记录及其所有子项。
我有两个模型:f (a -> b) -> a -> f b
和MenuItem
,我的项目会有许多变化,如我的方法所述:
MenuItem模型
MenuVariation
MenuVariation模型
public function variant()
{
return $this->hasMany('App\MenuVariation');
}
现在我的控制器中有以下方法:
public function item()
{
return $this->belongsTo('App\MenuItem', 'menu_item_id');
}
...目前只显示项目记录但不显示其变体,因此我更改了代码......
public function show($id)
{
$item = MenuItem::findOrFail($id);
return $item;
}
但奇怪的是返回所有项目及其变体。
有人可以帮我按预期工作吗?我仍然希望在Item记录中使用FindOrFail,但它也应检索任何变体(如果找到)。
答案 0 :(得分:15)
findOrFail
会启动查询,因此您需要切换订单并将with
放在其前面。然后使用findOrFail
。见下文:
public function show($id)
{
$item = MenuItem::with('variant')->findOrFail($id);
return $item;
}
当你这样做时,也不需要get
。