获取Laravel DB Transaction更新的行数

时间:2014-11-13 12:00:11

标签: php database laravel-4 transactions

我执行这样的数据库交易:

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 个答案:

答案 0 :(得分:0)

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);