Laravel Eager Loading 在单个注入模型上

Posted

技术标签:

【中文标题】Laravel Eager Loading 在单个注入模型上【英文标题】:Laravel Eager Loading on a single injected model 【发布时间】:2020-11-11 20:00:03 【问题描述】:

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

public function single(Coin $coin)

    $coin = $coin->with('exchanges')->get();
    return view('public.coin',compact('coin'));

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

【问题讨论】:

【参考方案1】:

您正在寻找Lazy Eager Loading。

你可以实现你想要的使用:

public function single(Coin $coin)

    $coin->load('exchanges');
    return view('public.coin',compact('coin'));

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

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

【讨论】:

以上是关于Laravel Eager Loading 在单个注入模型上的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eager Loading - 仅加载特定列

Laravel Eager Loading 删除子项的空值

Laravel:Eloquent Eager Loading 关系的选择

Laravel Eager Loading 和动态绑定模型关系

如何在 Laravel Eager Loading Array 中使用别名而不更改方法名称

Laravel Eager Loading - 总是好的?