首页 > 解决方案 > Laravel 8:查询构建器转义“大于”运算符

问题描述

尝试通过 Eloquent 运行查询时出现 MySQL 错误。

飞行控制器.php:

$flightsToFinish = SrteFlight::whereRaw('DATEDIFF(MINUTE, NOW(), disc_time) > 15')->get();
foreach ($flightsToFinish as $flightToFinish)
{
    $flightToFinish->status = 1;
    $flightToFinish->save();
} 

错误:

Illuminate\Database\QueryException: SQLSTATE[42000]: Syntax error or access violation:
1582 Incorrect parameter count in the call to native function 'DATEDIFF' (SQL: select * from 
`srte_flights` where DATEDIFF(MINUTE, NOW(), disc_time) > 15) in file
/var/www/vhosts/ar.ivao.aero/httpdocs/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 671

我错过了什么吗?提前致谢。

标签: mysqllaravel

解决方案


DATEDIFF 只需要 2 个参数。(我认为您滥用了 SQL 服务器语法而不是 MySQL 语法)

重复:对本机函数“DATEDIFF”的调用中的参数计数不正确

Sql 服务器语法

Mysql 语法


推荐阅读