雄辩:我可以“伪造更新”模型或更新然后还原吗?

时间:2014-01-07 13:12:10

标签: eloquent

我需要检查更新后模型状态是什么,以便执行代码。问题是在更新之前很难确定未来状态,在更新之后它很容易确定。

所以我需要以下两件事之一 - 要么: 1)假更新模型(获取更新的模型,但仍未写入DB) 2)真的更新模型,如果我不喜欢结果还原此更新

这些事情中的任何一个都可能吗?

1 个答案:

答案 0 :(得分:0)

说到2选项。如果您使用MySQL作为数据层欢迎来到神奇的数据库事务世界。 (http://dev.mysql.com/doc/refman/5.7/en/commit.html)。 Laravel的DB类提供了实现事务方法的特殊方法(http://laravel.com/docs/database#database-transactions)。在你的情况下,它可以这样写:

DB::beginTransaction();

$someInstance->update($data);

if ($someCondition) {
    DB::commit();
} else {
    DB::rollback();
}

无论如何检查文档,你可能会觉得它很有趣,值得现在。 请注意,MySQL表应该使用事务安全存储引擎(如InnoDB),据我所知,MyISAM引擎不支持事务。