Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel findOrFail有相关数据吗?_Php_Laravel_Eloquent - Fatal编程技术网

Php Laravel findOrFail有相关数据吗?

Php Laravel findOrFail有相关数据吗?,php,laravel,eloquent,Php,Laravel,Eloquent,在我的菜单控制器中,我有一个显示指定记录及其所有子项的方法 我有两种模型:MenuItem和MenuVariation,我的项目将有许多方法中概述的变化: 菜单项模型 public function variant() { return $this->hasMany('App\MenuVariation'); } public function item() { return $this->belongsTo('App\Men

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

我有两种模型:
MenuItem
MenuVariation
,我的项目将有许多方法中概述的变化:

菜单项模型

public function variant()
    {
        return $this->hasMany('App\MenuVariation');
    }
public function item()
    {
        return $this->belongsTo('App\MenuItem', 'menu_item_id');
    }
菜单变量模型

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;
}
…它当前只显示项目记录,而不显示其变体,因此我更改了如下代码

public function show($id)
{
    $item = MenuItem::findOrFail($id)->with('variant')->get();
    return $item;
}
但这会奇怪地返回所有项目及其变体


有人能帮我按要求工作吗?我仍然希望在项目记录上使用FindOrFail,但它也应该检索任何变体(如果找到)。

FindOrFail
将启动查询,因此您希望切换顺序并将
放在它前面。然后使用
findOrFail
。见下文:

public function show($id)
{
    $item = MenuItem::with('variant')->findOrFail($id);
    return $item;
}
这样做时也不需要
get