Phpunit在我的查询中检测到错误
SQLSTATE[HY000]: General error: 1 near "(": syntax error (SQL:
select * from "forms"
where "factual_checkout_at" is null
and "plan_checkout_at" >= ?
and CONCAT(UPPER(RIGHT(name, 3)), id) = ?
and "forms"."deleted_at" is null and "forms"."type" in (?, ?, ?) limit 1
)
我试图获取包含给定代码的表单。 (在这种情况下,我将用户姓名的最后3位数与他们的ID组合在一起。)
问题是,我的应用程序在此查询中运行良好,事务进展顺利,但不在phpunit上。
以下是获取该表格的方法(laravel):
$form = Form::whereNull('factual_checkout_at')
->where('plan_checkout_at', '>=', Carbon::today())
->whereRaw('CONCAT(UPPER(RIGHT(name, 3)), id) = ?', $code)
->firstOrFail();
return new FormResource($form);
我错过了什么?
提前谢谢!
答案 0 :(得分:1)
所以我确实错过了我的查询语法,因为我在测试中使用了sqlite。
将查询更改为
... and upper(substr(name, -3)) || id = ? ...
解决了这个问题。 感谢@Wreigh!