Fra*_*ost 5 eager-loading laravel eloquent
我有这样的控制器功能
public function show(NovelRequest $request, Novel $novel)
{
// load the chapters
$novel->chapters;
// return the detail view of a novel
return view('novels.show', compact('novel'));
}
Run Code Online (Sandbox Code Playgroud)
我收到一个新的对象,因为我使用路由模型绑定.但是,我想加载的不仅仅是章节.因为如果我现在做类似的事情会引起很多请求
$novel->chapters;
$novel->bookmarks;
...
Run Code Online (Sandbox Code Playgroud)
当我已经拥有这个小说的对象时,我想知道是否有一种加载"多重"关系的方法.通常我会喜欢
Novel::with('chapters', 'bookmarks')-> ...
Run Code Online (Sandbox Code Playgroud)
但是,我已经有了这个新颖的物体,所以我不想第二次看.
小智 6
我们可以通过在模型上定义方法来自定义解析逻辑(用于路由模型绑定)来急切地加载所需的关系。resolveRouteBinding
// In the Novel model
public function resolveRouteBinding($value)
{
return $this->with(['chapters', 'bookmarks'])->where($this->getRouteKeyName(), $value)->firstOrFail();
}
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/6.x/routing#explicit-binding
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |