如何在Laravel DB :: raw()中使用MySQL内置函数

时间:2018-01-31 14:31:36

标签: mysql laravel laravel-5

我正在使用如下所示的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功能?我的语法错了还是什么?

2 个答案:

答案 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