Laravel中的列增量值

时间:2018-12-14 18:43:07

标签: php mysql arrays laravel

我有一个这样的表:

key | counter | arrived |
123 |         |         |
121 |         |         |
313 |         |         |
543 |         |         |

我需要用一个增量值来计数计数器列,并以“ 1”到达,都像这样:

key | counter | arrived |
723 |    1    |    1    |
421 |    2    |    1    |
313 |    3    |    1    |
543 |    4    |    1    |

我将所有这些键放在一个数组中,而我的查询如下:

$update = DB::table('Selection')
        ->WhereIn('key', array_keys($req['aff']))
        ->update([
             'arrived' => 1
         ]);

在数组array_keys($req['aff'])中,我拥有需要更新的所有密钥,我可以用“ 1”更新"arrived"

  

但是我不知道如何用增量填充计数器列   值。

我也尝试过,但是没有机会:

$update = DB::table('Selection')
            ->WhereIn('key', array_keys($req['aff']))
            ->update([
               'arrived' => 1,
               'counter' => DB::raw('counter+1')
            ]);
有什么建议吗? 在此先感谢您,并祝您圣诞节快乐:D

1 个答案:

答案 0 :(得分:1)

您需要在此处使用mysql IFNULL方法,因为如果您的值是null,则不能递增值,因此,如果值是 null,则设置默认值,值是

\DB::table('Selection')
            ->whereIn('key', array_keys($req['aff']))
            ->update([
               'arrived' => 1,
               'counter' => \DB::raw('IFNULL(counter,0) + 1')
            ]);

有关更多信息,请阅读此问题see

  

请注意mysql数据类型必须为int,并且默认设置为零

在sql server中使用了ISNULL这样的函数

\DB::table('Selection')
                ->whereIn('key', array_keys($req['aff']))
                ->update([
                   'arrived' => 1,
                   'counter' => \DB::raw('ISNULL(counter,0) + 1')
                ]);

有关更多信息,请阅读此article