【发布时间】:2016-05-11 09:31:56
【问题描述】:
关于使用 Eloquent 模型事件,我想知道模型事件如何响应方法调用,是否与特定事件(常见事件)有任何重叠,如果有,如何处理为此类事件编写代码?
例如,如果我有一个模型,我调用create() on,即Model::create($array),据我所知,在幕后,当我调用create() 时,save() 方法被称为as shown in the docs:
/**
* Save a new model and return the instance.
*
* @param array $attributes
* @return static
*/
public static function create(array $attributes = [])
{
$model = new static($attributes);
$model->save();
return $model;
}
因此请记住这一点,如果我希望 saved() 和 created() 事件相同的行为,我是否只需为 saved() 事件创建一个事件而无需担心关于created() 事件,因为create() 方法是save() 方法的一种包装器(如上所示)。所以我可以这样做:
public static function boot()
{
parent::boot();
// covers created and saved events, as create() method triggers save()
static::saved(function($model) {
// do xyz
});
}
或者我需要创建两个单独的方法来监听这两个事件吗?像这样:
public static function boot()
{
parent::boot();
static::created(function($model) {
// do xyz
});
static::saved(function($model) {
// do xyz
});
}
所以只是重复我在开头提出的问题:
- 模型事件如何响应方法调用
- 是否与特定事件有任何重叠(常见事件,如上所述)
- 如果有,如何实际地为此类事件编写代码
任何有关理解此过程的指导将不胜感激,谢谢!
【问题讨论】:
标签: php laravel events eloquent