laravel 一次对多个字段进行 increment 或者decrement 操作

第一种方法:

函数上是不支持的, 一定要一起操作的话,可以利用第三个参数曲线救国 :

increment('detail_count', 1, ['num'=>DB::raw('num + 1')]) ;

实测通过!

看一下laravel的increment方法:
D:\phpStudy\WWW\xxx\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php

    public function increment($column, $amount = 1, array $extra = [])
    {
        if (! is_numeric($amount)) {
            throw new InvalidArgumentException('Non-numeric value passed to increment method.');
        }

        $wrapped = $this->grammar->wrap($column);

        $columns = array_merge([$column => $this->raw("$wrapped + $amount")], $extra);

        return $this->update($columns);
    }

可以看出,第三个参数是支持raw方法进行额外操作的。

第二种方法:

$results = DB::table('articles')->where('id', $params['id'])

->update(array(

   'vote' => DB::raw('vote + 1'),

   'num'  => DB::raw('num + 1'),

));

这个更加直观。

你可能感兴趣的:(php,laravel,框架)