Код: Выделить всё
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);
}
EDIT
$updates содержит массив ключей = value (где ключ — это имя столбца).
Если произойдет такое обновление: 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.
Это то, что я пытаюсь определить в своем коде: после фиксации транзакции были ли действительно обновлены какие-либо значения.
Подробнее здесь: https://stackoverflow.com/questions/269 ... ransaction
Мобильная версия