我有两张桌子 - 帖子和评论。每篇文章都有很多评论。我需要检索用户的所有帖子的最后评论。就像他多次评论一个帖子一样,我只需要对该帖子的最后评论。 因此,如果他对11个帖子进行了43次评论,那么我只需要10条评论(每篇帖子最后一条评论)。
我试过了:
Comment::where('user_id', $user_id)
->orderBy('created_at','DESC')
->distinct('post_id')
->get();
但它会回复他所有的评论。
答案 0 :(得分:0)
将关系放在你的帖子中'模型(' post.php')。
public function comments(){
return $this->hasMany('App\Comments','id_post','id');
}
public function last10comment (){
return $this->comments()->orderBy('created_at','DESC')->take(10)->get();
}
尝试使用您的控制器: 调用每个帖子$ post-> last10comment()`// return array / collection
答案 1 :(得分:0)
我已经制作了一个示例注释表,并尝试使用以下数据库查询它返回所需的结果。
这是代码。
$data = DB::table('comments as c1')
->select('c1.col_2', 'c1.col_2')
->leftJoin('comments as c2', function($join) {
$join->on('c1.post_id', '=', 'c2.post_id');
$join->on('c1.id', '<', 'c2.id');
})
->whereNull('c2.id')
->limit(10)
->get();