Laravel GroupBy和Count使用雄辩的模型

时间:2019-08-14 18:34:32

标签: mysql laravel eloquent

我有一张桌子

'new_comments'

带有字段

id,user_id, title, comment_description

我还有一个名为

的表

'comments_upvote'

具有

field user_id, post_id, likes

new_comments的

id和comments_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的所有点赞次数,我们该怎么做。

1 个答案:

答案 0 :(得分:0)

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

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

const ImageScreen = () => {
  return (
    <View>
      <ImageDetail />
      <ImageDetail />
      <ImageDetail />
      <ImageDetail />
    </View>
  );
};

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

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

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