我正在使用如下所示的SQL查询,并在Laravel查询生成器中使用MySQL内置的ADDDATE()函数将日期增加1天。
$sql = "UPDATE my_table
SET date_col = ADDDATE(date_col, INTERVAL 1 DAY)
WHERE id = {$the_id}";
DB::update($sql);
这很好用,没有理由真正改变它。但是,我首先尝试将查询生成器与DB :: raw一起使用,如下所示。
DB::table('my_table')
->where('id',$the_id)
->update(['date_col'=> DB::raw(ADDDATE(date_col, INTERVAL 1 DAY)]);
是否可以这种方式使用MySQL功能?我的语法错了还是什么?
答案 0 :(得分:1)
您需要在引号之间添加DB:raw
的内容,因为您添加了一个将发送到MySQL服务器的原始字符串。
DB::table('my_table')
->where('id',$the_id)
->update(['date_col'=> DB::raw('ADDDATE(date_col, INTERVAL 1 DAY)')]);
答案 1 :(得分:0)
是的,你可以这样。
DB::table('my_table')
->where('id',$the_id)
->update(['date_col'=> DB::raw("DATE_ADD(date_col, INTERVAL 1 DAY)")]);
此外,mysql
功能为DATE_ADD而非ADDDATE
。