- 视图
{{--博客列表--}}
<div class="card">
<div class="card-header">
博客列表
</div>
<div class="card-body">
<table class="table">
<tbody>
@foreach($blogs as $blog)
<tr>
<td>{{$blog->content}}</td>
<td>{{$blog->user->name}}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="card-footer text-muted">
{{$blogs->links()}}
</div>
</div>
- 模型
public function user() {
return $this->belongsTo(User::class); // 模型关系
}
- 控制器
public function home() {
$blogs = Blog::orderby('id', 'DESC')->with('user')->paginate(5);
return view('home', compact('blogs'));
}
注意:其中用了with方法,这里的with方法会将blog之下的user一起查询出来,类似于inner join。
而且不会出现N+1影响性能的问题。
不使用with则先查询blog一次得出N个结果,之后再根据user_id反查N次user表,总查询次数为N+1
如果想将特定条件下的user查出来,则可以参考:
// category分类, goods商品
public function category($categoryId)
{
$category = Category::with(['goods' => function ($query) {
$query->where('is_sale', true);
}])->find($categoryId);
return $category;
}