Получить количество строк, обновленных транзакцией Laravel DB

Я выполняю транзакцию БД следующим образом:

DB::beginTransaction();
try
{
foreach ($updates as $column_name => $new_value) {
DB::table('my_table')
->where('id', '=', $line_id)
->update(array($column_name => $new_value));
}
DB::commit();
return Response::make('Updated', 200);
}
catch (Exception $ex)
{
DB::rollback();
return Response::make('Error - '. $ex->getMessage(), 500);
}

Можно ли получить количество затронутых / обновленных строк при выполнении DB::commit(); и вернуть его в моем ответе?

РЕДАКТИРОВАТЬ

$updates содержит key знак равно value массив (где key это имя столбца).

Если происходит такое обновление: UPDATE some_table SET some_number = some_number WHERE id = 1 итоговое число затронутых строк будет 0 (т.е. ничего действительно не изменилось).

Однако, если происходит обновление, подобное этому: UPDATE some_table SET some_number = some_number + 1 WHERE id = 1 например, тогда это приведет к тому, что 1,

Это то, что я пытаюсь определить в моем коде, после того, как транзакция зафиксирована, какие-либо значения действительно обновлены.

1

Решение

NEW

Вы можете обновить, только если значение отличается от предыдущего:

$count = DB::table('my_table')
->where('id', '=', $line_id)
->where($column_name, '!=', $new_value)
->count();

Таким образом, вы можете сказать, имеет ли данная строка другое значение и собираетесь ли вы ее менять.

OLD

count перед запросом:

$number = DB::table('my_table')
->where('id', '=', $line_id)
->count();

Вернуться в ответ:

return Response::make('Updated ' . $number, 200);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]