这是我的 laravel 项目中的一个额外的“)”,laravel 为我查询

Posted

技术标签:

【中文标题】这是我的 laravel 项目中的一个额外的“)”,laravel 为我查询【英文标题】:Here is an extra ")" in my laravel project which laravel queries for me 【发布时间】:2020-08-27 06:07:00 【问题描述】:

这是我的代码:

DB::table('admins')->whereIn('a_id', function ($query)
        
            $query->select('a_id')->fromRaw('( select a_id, row_number() over(
            partition by a_username order by a_username) as row_num from admins
            ) t')
                ->whereRaw('row_num > 1');
        )->delete();
);

这是 laravel 对我的查询:

delete from `admins` where `a_id` in 
(select `a_id` from ( select a_id, row_number() over(
partition by a_username order by a_username) as row_num from admins ) 
t where row_num > 1));

如您所见,查询末尾有一个“)”,如果我删除它,它会起作用,但我该怎么做呢??

我是从这个错误中得到的:

Illuminate\Database\QueryException
SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of 
GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is 
illegal if there is no GROUP BY clause (SQL: delete from `admins` 
where 
`a_id` in (select `a_id` from ( select a_id, row_number() over( 
partition by a_username order by a_username) as row_num from admins ) 
t where row_num > 1))

由于这个错误,我在查询末尾发现了一个额外的“)”,这不是我的代码,而且似乎 laravel 把它弄错了。

谁知道我该如何删除它,或者如果问题出在代码中,我在代码中犯了什么错误。

我的 laravel 版本是:7.9.2,我的 php 版本是 7.4.5。

【问题讨论】:

尝试将strict => true to false 更改为config/database.php 更改为connections => mysql。检查它是否有帮助。 你能接受答案让别人得到帮助吗? 在下面查看我的答案,点击对勾图标 ✔ 并点击向上箭头。 【参考方案1】:

尝试改变

 strict => true to false in config/database.php in connections => mysql.

检查是否有帮助。

【讨论】:

以上是关于这是我的 laravel 项目中的一个额外的“)”,laravel 为我查询的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 从一个表单中插入多条记录

在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”

无法在 Laravel 中的模型视图中显示数据

通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值

Laravel Blade 指令添加额外的引号

Laravel - 为路由添加额外信息