我正在尝试通过使用像这样雄辩的间隔添加 1 天来更新所有记录的日期时间字段
TestModel::update(['date' => \DB::raw('DATE_ADD(date, INTERVAL 1 DAY)')]);
但我收到此错误
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1 near "1": syntax error (SQL: update "test" set "date" = DATE_ADD(date, INTERVAL 1 DAY))
这没有意义,就好像我直接在 MYSQL 中使用此查询(使用 HeidiSQL)一样,如果我删除表和字段名称周围的引号,它就可以工作。
update test set date = DATE_ADD(date, INTERVAL 1 DAY)
我也尝试过不使用
DATE_ADD
功能,但出现了同样的错误
\DB::raw('date + INTERVAL 1 DAY')
在字段周围添加引号没有任何区别。
插入、删除、更新操作的所有其他查询都可以正常工作。 我检查过类似的问题here,这似乎是雄辩的正确格式,那么这里出了什么问题?
Laravel 5.8(我知道它已经过时了)
MySQL 8.0.34
PHP 7.4
我认为你应该使用反引号(不是因为
date
是保留字,而是一般用反引号包裹列)
TestModel::update(['date' => \DB::raw('DATE_ADD(`date`, INTERVAL 1 DAY)')]);