Laravel学习笔记(17)Blog列表功能

  1. 视图
    {{--博客列表--}}
    <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>
  1. 模型
    public function user() {
        return $this->belongsTo(User::class);   // 模型关系
    }
  1. 控制器
    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;
}
发布了40 篇原创文章 · 获赞 0 · 访问量 775

猜你喜欢

转载自blog.csdn.net/qj4865/article/details/104249357