【发布时间】:2020-04-14 20:05:38
【问题描述】:
我需要让我的模型建立深厚的关系,但它会返回
SQLSTATE[42000]:语法错误或访问冲突:1055 表达式 #5 的 SELECT 列表不在 GROUP BY 子句中并且包含非聚合 列“gis-web.areas.id”在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by (SQL: select
zone_regions.,areas.,segments.* 来自zone_regions内部连接 areasonareas.zone_id=zone_regions.id内连接hthree_regionsonhthree_regions.area_id=areas.id内连接segmentsonsegments.hthree_id=hthree_regions.id分组zone_regions.id)
代码
$data = DB::table('zone_regions')
->join('areas', 'areas.zone_id', '=', 'zone_regions.id')
->join('hthree_regions', 'hthree_regions.area_id', '=', 'areas.id')
->join('segments', 'segments.hthree_id', '=', 'hthree_regions.id')
->select(
'zone_regions.*',
'areas.*',
'segments.*'
)
->groupBy('zone_regions.id')
->get();
逻辑
-
zone_regions有areas -
areas有hthree_regions -
hthree_regions有segments - 等等我会添加...
我想从这些数据中得到什么?
我需要获取zone_regions 下方所有内容的计数,例如:
zone_regions 1 有20 areas、2000 hthree_regions 和16000 segments
所以我可以计算所有与此 zone region 相关的行,这就是我想要实现的目标。
有什么想法吗?
【问题讨论】:
-
您正在使用
GROUP BY,但没有选择任何计数聚合。你打算发布一些其他 Laravel 查询吗? -
@TimBiegeleisen 不,这是我拥有的代码,请随时指出我犯错的地方。谢谢
-
mysql 5.75+ 包含
only_full_group_by模式,它只允许你选择groupBy中的字段和聚合函数。 -
另一个问题是您要从差异表中选择所有字段。这些表中的每一个都有相同的primary_key
id,id中只有一个可以工作,其他的会被覆盖。 -
@TsaiKoga 谢谢你已经解决了这个问题,将分享我的解决方案