gpt4 book ai didi

mysql - 根据相关表使用哪个 laravel 查询对顶部条目进行排序

转载 作者:行者123 更新时间:2023-11-28 23:46:30 25 4
gpt4 key购买 nike

我有两个模型:帖子和点赞。帖子和点赞是一对多的关系(因此,一个帖子有很多点赞)。喜欢的模特还有一个 isActive表示喜欢的字段是主动的还是被动的。

我想获得(排序)获得最大“活跃”点赞的前 5 个帖子(仅考虑 isActive 字段为 true 的点赞)。

哪个 Laravel 查询可以给我结果?

我的问题是不仅根据相关模型的字段对帖子进行排序,而且还根据相关表中的条目数对帖子进行排序。

这是查询:

$posts = Post::selectRaw('posts.*, count(likings.id) as likes_count')
->leftJoin('likings', function ($join) {
$join->on('likings.post_id', '=', 'posts.id')
->where('likings.isActive', '=', 1);
})
->groupBy('posts.id')
->orderBy('likes_count', 'desc')
->take(5)
->get();

这是错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'database.posts.user_id' isn't in GROUP BY 
(SQL: select posts.*, count(likings.id) as likes_count from 'posts' left join 'likings' on 'likings'.'post_id' = 'posts'.'id' and 'likings'.'isActive' = 1 group by 'posts'.'id' order by 'likes_count' desc limit 5)

最佳答案

或者只是执行这个查询

Post::with(['likes' => function ($query){
$query->where('active', 1);
}]);

如果在 mysql 中太难,则按 php 排序。对于前一些 PostTransformer 类

关于mysql - 根据相关表使用哪个 laravel 查询对顶部条目进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com