私の Laravel 5.3 アプリケーションでは、いくつかの Eloquent モデル イベント (主にcreating
) を使用しています。1 週間前までは正常に動作していましたが、今日になって突然、いずれも発砲していないように見えることに気付きました。
フレームワークを介してデバッグすると、実際にはすべてが Dispatcher::listeners 配列に追加されていることが示されますが、ステップスルーして実際に実行するコードが見つかりません。イベント コールバックにコマンドを配置die()
しても何も実行されず、それらが実際に起動していないことが示唆されます。
以下にそれらの 1 つの例を示します (これは特性に関するものですが、特性と直接モデルを組み合わせて使用しています)。
public static function bootUuidModel() {
// On create, generate and assign a UUID
static::creating(function (Model $model) {
$model->setAttribute(self::getUuidFieldKey(), Uuid::uuid4()->toString());
});
}
なぜこれらが突然実行されなくなったのか、誰にも考えがありますか? さまざまな目的でさまざまなモデルで使用していますが、どれも実行されていないようです。最近、このフレームワークを使用している他の誰かがこれらの問題を経験しましたか?
前もって感謝します
- アップデート -
さて、さらに調査した結果、Laravel の DatabaseServiceProvider が起動する前に User オブジェクトが何らかの理由で起動していることが問題であることがわかりました。DatabaseServiceProvider::boot() は、何らかの理由で、イベント ディスパッチャがモデルに静的に割り当てられている場所です。したがって、ディスパッチャーがまだ存在しないため、User オブジェクトでの起動はイベントをディスパッチャーに登録していません。私は User オブジェクトを自分で起動していません.Laravelがこれを行う理由を知っている人はいますか?