Laravel findOrFail有相关数据吗?

时间:2015-10-31 20:12:01

标签: php laravel eloquent

在我的菜单控制器中,我有一个方法应该显示指定的记录及其所有子项。

我有两个模型:f (a -> b) -> a -> f bMenuItem,我的项目会有许多变化,如我的方法所述:

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,但它也应检索任何变体(如果找到)。

1 个答案:

答案 0 :(得分:15)

findOrFail会启动查询,因此您需要切换订单并将with放在其前面。然后使用findOrFail。见下文:

public function show($id)
{
    $item = MenuItem::with('variant')->findOrFail($id);
    return $item;
}

当你这样做时,也不需要get