Laravel 在单个注入模型上预加载

Laravel Eager Loading on a single injected model

我正在尝试在我的项目中使用 Laravel Eager Loading,并且我已经阅读了有关它的文档。文档中的每个示例都是关于使用 Eager Loading 获取模型的所有实例。但它只是让所有实例而不仅仅是一个模型吗? 考虑一下:

public function single(Coin $coin)
{
    $coin = $coin->with('exchanges')->get();
    return view('public.coin',compact('coin'));
}

这是一种控制器方法,它使用路由绑定加载单个硬币并注入实例,我正在尝试加载该硬币的关系。但是当我在 blade 视图文件中访问 $coin 时,我得到了所有硬币的列表。 所以我不能急于加载注入的模型实例?!

您正在寻找 Lazy Eager Loading.

您可以使用以下方式实现您想要的效果:

public function single(Coin $coin)
{
    $coin->load('exchanges');
    return view('public.coin',compact('coin'));
}

此外,您可以在检索单个模型时预先加载关系,例如:

Coin::with('exchanges')->find($id);