如何获取laravel中每个外键的最后一个值?

时间:2016-10-12 12:00:07

标签: laravel eloquent

我有两张桌子 - 帖子和评论。每篇文章都有很多评论。我需要检索用户的所有帖子的最后评论。就像他多次评论一个帖子一样,我只需要对该帖子的最后评论。 因此,如果他对11个帖子进行了43次评论,那么我只需要10条评论(每篇帖子最后一条评论)。

我试过了:

Comment::where('user_id', $user_id)
               ->orderBy('created_at','DESC')
               ->distinct('post_id')
               ->get(); 

但它会回复他所有的评论。

2 个答案:

答案 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();