如何在laravel中将Group By与Join表一起使用[重复]
Posted
技术标签:
【中文标题】如何在laravel中将Group By与Join表一起使用[重复]【英文标题】:How to use Group By with Join table in laravel [duplicate] 【发布时间】:2019-10-06 20:54:32 【问题描述】:执行查询时,我收到如下错误消息。
$ads = DB::table('ads')
->join('adimages','adimages.ad_id','=','ads.id')
->select(
'adimages.ad_id',
'ads.ad_title',
'ads.created_at',
'ads.beds',
'ads.baths',
'ads.landmark',
'ads.city',
'ads.price',
'adimages.photo'
)
->groupBy('adimages.ad_id')
->get();
这是我遇到的错误。
SQLSTATE[42000]:语法错误或访问冲突:1055 'nekton.ads.ad_title' 不在 GROUP BY 中(SQL:选择
adimages
.ad_id
、ads
.ad_title
、@987654326 @.created_at
,ads
.beds
,ads
.baths
,ads
.landmark
,ads
.@9876543@35@, @987654337., @987654337., @987654336photo
从ads
内部连接 adimages
onadimages
.ad_id
=ads
.id
group byadimages
.ad_id
)
【问题讨论】:
nekton.ads.ad_title
来自哪里?
【参考方案1】:
在 Laravel 中,您需要在 database.php
文件中禁用严格键。请按照以下步骤操作
1. Open config/database.php
2. Find strict key inside mysql connection settings
3. Set the value to false
我想这会对你有所帮助。
【讨论】:
在 Laravel 配置中设置"strict" => false
将禁用 ONLY_FULL_GROUP_BY
,这似乎是问题的原因。这样做会因不当使用GROUP BY
语句而导致意外结果,例如来自不在分组数据集中的列中的MySQL is free to choose any value。另一种选择是使用SELECT ANY_VALUE(ads.ad_title) AS ad_title
。以上是关于如何在laravel中将Group By与Join表一起使用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS SQL 中将 last_value 与 group by 结合使用?
如何在 LINQ 中将 Group By 与 Task<IEnumerable<Entity>> 一起使用
Spark Window 聚合与 Group By/Join 性能
如何通过 join 和 group by 在 C# Linq 中获取 Min?