Laravel Eloquent MySQL DateTime 字段更新间隔给出错误

问题描述 投票:0回答:1

我正在尝试通过使用像这样雄辩的间隔添加 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

mysql laravel datetime eloquent intervals
1个回答
0
投票

我认为你应该使用反引号(不是因为

date
是保留字,而是一般用反引号包裹列)

TestModel::update(['date' => \DB::raw('DATE_ADD(`date`, INTERVAL 1 DAY)')]);
© www.soinside.com 2019 - 2024. All rights reserved.