我有桌子

'new_comments'

与领域

id,user_id,title,comment_description

我有另一个表名为

'comments_upvote'



field user_id,post_id,likes

new_comments的id和comment_upvote表的post_id相同。我们必须接受最喜欢的评论。我们如何获取数据。

$ud = Comments_upvote::select('post_id')->groupby('post_id')-
>orderby(DB::raw('count(likes)'), 'desc')->get();
$postid = array();
  foreach ($ud as $key => $value) {

    $postid[] = $value->post_id;
  }
 $data = DB::table('new_comments')->whereIn('id',$postid)->get();


但是问题是我必须计算其值= 1的所有点赞次数,我们该怎么做。

最佳答案

如果您向我们展示了一些代码,您将得到一个更具体的答案,但是这里简要概述了您所需要的内容:定义您的关系(确保使用自定义外键),使用whereHas,按post_id计数分组和按排序计数递减。

因此,我猜测您至少有两个模型NewComment和CommentUpvote(应该)。在NewComment中定义1:n关系:

public function upvotes(){
    $this->hasMany('App\CommentUpvote', 'post_id');
}


然后在您的控制器中(再次猜测,因为您未显示任何代码):

$bestComments = NewComment::whereHas('upvotes', function($query){
  $query->select('post_id', DB::raw('count(*) as total'))->groupBy('post_id')->orderBy('total', 'desc');
})->get();


免责声明:这是未经测试的,超出了我的头脑,但应该以正确的方向对您不利。

关于mysql - Laravel GroupBy和Count使用 Eloquent 模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57500259/

10-13 23:23