这是我的 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 ajax返回的json中的每个斜杠中获取额外的反斜杠“\”