Eloquentモデルイベントを使用することに関して、私は特定のイベント(共通イベント)との重複がある場合、モデルイベントがメソッド呼び出しにどのように応答するのか、もしあれば、そのようなイベントのコードを書き込む方法を考えていましたか?例えばEloquentモデルイベントは、作成時に両方とも呼び出され、保存され、作成されますか?
、私はsave()
メソッドがas shown in the docsと呼ばれるcreate()
を呼び出すときに、舞台裏で、理解し、私は私が上create()
を呼んでいるモデル、すなわちModel::create($array)
を持っている場合:
/**
* 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()
イベントのイベントを作成してcreate()
というイベントが発生するのを心配する必要はありません。 save()
メソッドのラッパー(上記参照)。だから、私はこれを行うことができます:
public static function boot()
{
parent::boot();
// covers created and saved events, as create() method triggers save()
static::saved(function($model) {
// do xyz
});
}
また、私は両方のイベントを聞くために2つの別個のメソッドを作成する必要がありますか?このように:(共通をモデルイベントは、メソッドに対応するにはどうすればよい
- 呼び出し
- は、特定のイベントを持つ任意の重複がある:
public static function boot() { parent::boot(); static::created(function($model) { // do xyz }); static::saved(function($model) { // do xyz }); }
だから、私は冒頭で述べた質問を繰り返します実際にそのようなイベント
このプロセスを理解する上でのガイダンスは感謝します。
私は$ this-> wasRecentlyCreated for static :: savedをチェックするはずです。なぜ彼らは普通の人のように作成/保存されたイベントを持っていないのでしょうか? –
@alextoader 'saved'メソッドは、最初の引数として保存されたモデルを渡すので、' wasRecentlyCreated'をチェックしてください。 –