Ответ 1
В зависимости от того, чего вы хотите достичь, у вас есть несколько вариантов. Сначала проверьте ниже.
Модельные крючки с плавным пакетом
Если вы заинтересованы в автомодулирующих моделях, посмотрите на https://github.com/laravelbook/ardent пакет - Самонастраивающиеся интеллектуальные модели для Laravel Framework 4 Eloquent O/RM. Помимо отличных функций проверки, он предлагает дополнительные крючки модели, которые вы можете использовать:
Here 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 Model Events (что на самом деле Ardent обертывает крючки). Изучите документы http://laravel.com/docs/eloquent#model-events
Красноречивые модели запускают несколько событий, позволяя вам подключаться к различным точек жизненного цикла модели, используя следующие методы: создание, создавать, обновлять, обновлять, сохранять, сохранять, удалять, удалять, восстановление, восстановление.
Всякий раз, когда новый элемент сохраняется в первый раз, создание и создаются события. Если элемент не является новым, а метод сохранения - вызывается обновление/обновление событий. В обоих случаях сохраненные/сохраненные события будут срабатывать.
Если ложь возвращается из создания, обновления, сохранения или удаления события, действие будет отменено:
Решение
Наконец, повторив вам вопрос, вы можете использовать вышеупомянутые подходы разными способами, но наиболее очевидно, что вы можете объединить его (или нет) с Eloquent Models getDirty() api docs here. Он будет работать, например, с событием сохранения.
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!
});