Laravel关联表统计报错:查询帖子获赞数触发1055语法错误
解决Laravel关联统计获赞数的1055错误
错误原因
MySQL启用严格模式后,GROUP BY子句必须包含SELECT中所有非聚合字段。你的查询里同时选择了posts.id和posts.status,但仅按posts.id分组,违反了这一规则,因此触发1055语法错误。
解决方法
方案1:补全GROUP BY字段
将SELECT中的所有非聚合字段加入GROUP BY:
$data = Post::query() ->leftJoin('likes', 'posts.id', '=', 'likes.post_id') ->selectRaw('posts.id, posts.status, COUNT(likes.id) AS curtidas') ->groupBy('posts.id', 'posts.status') ->get();
方案2:使用Laravel自带的关联统计(推荐)
Laravel提供了withCount方法,无需手动写JOIN和GROUP BY,更简洁且避免错误:
// 基础用法,获赞数字段默认是likes_count $data = Post::query() ->select('id', 'status') ->withCount('likes') ->get(); // 自定义获赞数字段名(对应你的curtidas) $data = Post::query() ->select('id', 'status') ->withCount(['likes as curtidas']) ->get();
使用时直接通过$post->curtidas访问对应帖子的获赞数即可。
内容的提问来源于stack exchange,提问作者gobs
相关产品推荐
相关产品推荐

