Есть ли способ увеличить количество столбцов в laravel?
Предположим:
DB::table('my_table') ->where('rowID', 1) ->increment('column1', 2) ->increment('column2', 10) ->increment('column3', 13) ->increment('column4', 5);
Но это приводит к:
Call to a member function increment() on integer
Я просто хочу найти эффективный способ сделать это, используя заданные функции из laravel. Благодарю. Любые предложения сделают.
Для этого нет существующей функции. Вы должны использовать update()
:
DB::table('my_table') ->where('rowID', 1) ->update([ 'column1' => DB::raw('column1 + 2'), 'column2' => DB::raw('column2 + 10'), 'column3' => DB::raw('column3 + 13'), 'column4' => DB::raw('column4 + 5'), ]);
Для дальнейшего использования в 5.2 это было сделано, если сделать следующее
Вы также можете указать дополнительные столбцы для обновления во время операции:
DB :: table ('users') -> increment ('votes', 1, ['name' => 'John']);
Во-первых, результатом increment
является целое число в соответствии с документацией: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html
Таким образом, вам нужно будет сделать вызов для каждого приращения:
DB::table('my_table') ->where('rowID', 1) ->increment('column1', 2); DB::table('my_table') ->where('rowID', 1) ->increment('column2', 10); DB::table('my_table') ->where('rowID', 1) ->increment('column3', 13); DB::table('my_table') ->where('rowID', 1) ->increment('column4', 5);
Я не могу найти более быстрое решение, если вы не решите его с помощью команды необработанного запроса на обновление.
Также ваш пример кода, вероятно, приведет к ошибке, поскольку вы закрыли инструкцию ;
и продолжить с новым вызовом ->increment
на следующей строке.