laravel multilevel relations

时间:2016-12-21 08:52:57

标签: php laravel eloquent laravel-5.2

是否可以在比1级更深层次上与Eloquent进行多级关系查询?我的表看起来像这样:

  

post_comments-> ID |评论| POST_ID | user_ID的| ...

     

post_comment_replies-> ID |回复| post_comment_id | user_ID的| ...

     

用户 - > ID |名称| ...

     

user_data-> ID |头像| ...

所以我想问一下,是否可以通过所有回复和用户数据获取评论 发布在Eloquent的1个查询中回复评论的人。

这就是我的评论模型的样子:

class PostComment extends Model{
public function replies(){
    return $this->hasMany(PostCommentAwnsers::class);
}

public function user() {
    return $this->belongsTo(User::class);
}
public function userInfo(){
    return $this->belongsTo(UserInfo::class,'user_id','user_id');
}}
public function index($id){
    $posts = Post::find($id);
    $postComments = PostComment::where('post_id','=',$id)->paginate(5);

    return view('post.show',[
        'post' => $post,
        'postComments' =>$postComments
    ]);
}

当我获得评论的所有用户数据时,我想获得回复者的所有用户数据。 我真的很抱歉,如果在其他地方已经将其删除或记录在案,但我似乎无法找到解决此问题的确切方法。

1 个答案:

答案 0 :(得分:8)

你应该寻找急切的加载:https://laravel.com/docs/5.3/eloquent-relationships#eager-loading

如果你想获得所有帖子及其评论:

$posts = Post::with('comment')->get();

如果您希望所有帖子都有评论和回复评论:

$posts = Post::with('comment.reply')->get();