根据您想要实现的目标,您在这里有一些选择。首先查看以下内容。
带 Ardent 包装的模型挂钩
如果您对自动验证模型感兴趣,请查看https://github.com/laravelbook/ardent https://github.com/laravelbook/ardentpackage -Laravel Framework 4 的 Eloquent O/RM 的自我验证智能模型.除了出色的验证功能之外,它还提供了您可以使用的其他模型挂钩:
Here's the complete list of available hooks:
before/afterCreate()
before/afterSave()
before/afterUpdate()
before/afterDelete()
before/afterValidate() - when returning false will halt validation, thus making save() operations fail as well since the validation was a failure.
Laravel 模型事件
如果你不想使用任何额外的东西,你可以只使用 Laravel 模型事件(实际上 Ardent 包裹在钩子中)。查看文档http://laravel.com/docs/eloquent#model-events http://laravel.com/docs/eloquent#model-events
Eloquent 模型会触发多个事件,让您能够挂钩各种事件
使用以下方法在模型的生命周期中指定点:创建、
创建、更新、更新、保存、保存、删除、删除、
恢复,恢复。
每当第一次保存新项目时,创建和
创建的事件将会触发。如果项目不是新的并且保存方法是
调用时,将触发更新/更新事件。在这两种情况下,
保存/保存的事件将会触发。
如果创建、更新、保存、删除返回 false
事件,操作将被取消:
Solution
最后,针对您的问题,您可以通过多种方式利用上述方法,但最明显的是您可以将其与雄辩模型结合(或不结合)弄脏() API 文档在这里 http://laravel.com/api/source-class-Illuminate.Database.Eloquent.Model.html#2149-2167方法。例如,它将与保存事件一起使用。
Yourmodel::saving(function($model)
{
foreach($model->getDirty() as $attribute => $value){
$original= $model->getOriginal($attribute);
echo "Changed $attribute from '$original' to '$value'<br/>\r\n";
}
return true; //if false the model wont save!
});