laravel模型关联

hasOne        一对一     用户名-手机号
hasMany         一对多       文章-评论
belongTo       一对多反向   评论-文章
belongsToMany      多对多     用户-角色
hasManyThrough    远程一对多   国家-作者-文章
moreghMany      多态关联    文章/视频-评论
morephToMany    多态多对多   文章/视频-标签

  • 创建评论模型

class Comment extends baseModel
{
    public function post(){
        return $this->belongsTo('AppPost');
    }

    /**
     * notes: 评论所属用户
     * author: cible
     * time: 2018/12/4 上午8:44
     */
    public function user(){
        return $this->belongsTo('AppUser');
    }
}
  • 增加评论

    public function comment(Post $post){
        $this->validate(request(),[
            'content'   => 'required|min:3'
        ]);

        $comment = new Comment();
        $comment->user_id   = Auth::id();
        $comment->content   = request('content');
        $post->comments()->save($comment);

        return back();
    }
  • 评论列表

模型关联预加载(两种)  

$books = AppBook::with('author')->get();
$books->load('author','publisher');
//实例
$post->load('User');

模版(直接在模版加载输出)

@foreach($post->comments as $comments)
<li class="list-group-item">
    <h5>{{$comments->created_at}} by {{$comments->user->name}}</h5>
    <div>
        {{$comments->content}}
    </div>
</li>
@endforeach
  • 获取评论总数

模型关联计数

$posts = AppPost::withCount('comments')->get();
//实例
$lists = Post::orderBy('created_at','desc')->withCount('Comments')->paginate(5);

//视图层
{{$list->comments_count}}