GroupBy() 覆盖我的选择语句 Eloquent Laravel
Posted
技术标签:
【中文标题】GroupBy() 覆盖我的选择语句 Eloquent Laravel【英文标题】:GroupBy() overwrite my select statement Eloquent Laravel 【发布时间】:2021-10-26 10:26:56 【问题描述】:我在这个查询中遇到了这个问题,[sede for location and aule for materials]
$sedi = Sede::with('location', 'aule', 'tipologia_sedi')->join('static_sedi_tipologia', 'static_sedi_tipologia.id', '=', 'sedi.static_sedi_tipologia_id')
->leftJoin('aule', 'sedi.id', '=', 'aule.sedi_id')
->selectRaw("COUNT(aule.id) as n_aule, sedi.*, static_sedi_tipologia.nome as tipologia")->addSelect($count)
->groupBy('sedi');
除了将数据与集合中的关系进行收集之外,我还需要获取更多数据。 在这种情况下,我需要将每个位置的教室数量关联到一个位置。 我注意到在许多尝试之一中 groupBy 语句覆盖了我的 select 语句
COUNT(*) as aggregate
我已经尝试过 groupByRaw()。同样的问题。
在 sql 中查询工作正常
select COUNT(aule.id) as n_aule, sedi.*, static_sedi_tipologia.nome as tipologia
from `sedi`
inner join `static_sedi_tipologia`
on `static_sedi_tipologia`.`id` = `sedi`.`static_sedi_tipologia_id`
left join `aule`
on sedi.id = `aule`.`sedi_id`
GROUP by sedi.id
【问题讨论】:
我认为您忘记使用与查询相同的->groupBy('sedi.id')
@ApurvBhavsar 已经尝试过了。同样的错误
你试过不加addSelect()
。
是的,addSelect 是一个错字,我忘记在问题中删除它
【参考方案1】:
使用 Laravel Eloquent 关系功能。
您可以使用 aule、sedi、tipologia_sedi、static_sedi_tipologia 创建关系。
获取aule
的计数
Use $query->withCount('aule')
此函数返回与您的外键关联的集合计数。
你可以像$variable->aule_count
一样访问
【讨论】:
以上是关于GroupBy() 覆盖我的选择语句 Eloquent Laravel的主要内容,如果未能解决你的问题,请参考以下文章
使用 Linqdatasource 和 groupby 属性
Django 做一个简单的 group by/count 语句