Laravel活动:更新vs更新?

时间:2018-02-10 10:33:35

标签: php events laravel-5

eloquent model events<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="popup1" class="overlay"> <div class="popup"> <h2>Notification</h2> <a class="close" href="#">&times;</a> <div class="content"> App is under-construction. But payment on referral income has started. Please stay tuned. </div> </div> </div>updating之间有什么区别?

我的猜测是updated在模型更新之前触发,updating在模型更新后触发。这意味着我在更新模型时应始终触发updated - 即使实际没有更改任何值。但是,这两个事件似乎仅在事件实际更改了DB中的值时触发。那有什么区别呢?

1 个答案:

答案 0 :(得分:2)

在实际调用更新之前确定是否要更新模型。更新事件的目的是在写入数据库之前执行任何任务(并且可选地中止更新)。这是有道理的,因为您不希望事件声称在更新即将发生时即将触发更新。

但是,更新或插入之前触发的事件始终是saving事件,听起来就像您需要的那样。如果你想要&#34;预更新&#34;事件然后听取saving事件并检查是否$model->exists(否则保存可能在inserting事件之前)

相关代码位于https://github.com/laravel/framework/blob/edf4bb4e21107c124cd601616ef2b61aaf1c306e/src/Illuminate/Database/Eloquent/Model.php#L544

 if ($this->fireModelEvent('saving') === false) {
         return false;
}
if ($this->exists) {
        $saved = $this->isDirty() ?
                    $this->performUpdate($query) : true;
} /* else insert */

调用updatingupdated事件发生在performUpdate

https://github.com/laravel/framework/blob/edf4bb4e21107c124cd601616ef2b61aaf1c306e/src/Illuminate/Database/Eloquent/Model.php#L609