【问题标题】:Column Increment value in laravellaravel中的列增量值
【发布时间】:2019-05-16 01:14:24
【问题描述】:

我有一张这样的桌子:

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

【问题讨论】:

    标签: php mysql arrays laravel


    【解决方案1】:

    你需要在这里使用 mysql IFNULL 方法,因为如果你的值为 null 则不增加值,所以如果值为 null 则设置默认值值为 zero

    \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

    【讨论】:

    • SQLSTATE[42000]:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]'IFNULL' 不是可识别的内置函数名称。不起作用:\
    • @GiuseppeLiggieri 我在这里更新了我使用ISNULL 方法的答案
    • 不起作用,它用全“1”填充计数器列。它必须从上一条记录增加 +1。
    猜你喜欢
    • 2015-07-01
    • 2016-04-29
    • 2022-10-01
    • 1970-01-01
    • 2017-12-12
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多