【问题标题】:How to use Group By with Join table in laravel [duplicate]如何在laravel中将Group By与Join表一起使用[重复]
【发布时间】: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_idads.ad_title、@987654326 @.created_at, ads.beds, ads.baths, ads.landmark, ads.@9876543@35@, @987654337., @987654337., @987654336 photoads 内部连接 ​​adimages on adimages.ad_id = ads.id group by adimages.ad_id)

【问题讨论】:

  • nekton.ads.ad_title 来自哪里?

标签: php laravel


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2022-10-22
  • 2021-11-30
  • 2021-12-10
  • 1970-01-01
  • 2022-07-11
相关资源
最近更新 更多