2017-05-18 19 views
0

私のユーザーテーブルで私は、名前が検証され、データ型booleanがデフォルト値 'false'の列を持っていますが、特定のユーザーの列値が 'true'に変更されたときにイベントを発生させたいそのイベントに基づいて通知を行いますか? どのように私はこれを達成することができますか?Laravel:ユーザーテーブル内の特定の列が変更されたときにイベントを発生させる方法は?

答えて

1

モデルイベントにフックを追加してチェックを行うことができます。あなたのモデルには以下のコードがあります。イベントとともにユーザーオブジェクトを渡す場合もあれば、そうでない場合もあります。これは、通知を送信する場合に便利です。

public static function boot() 
{ 
    parent::boot(); 

    static::updated(function($user) { 
     if ($user->verified == true) { 
      event(new UserVerified($user)); 
     } 
    }); 
} 
+0

ありがとうございました。それがこのアイデアを実装する良い方法だと思われますが、これを実行する最良の方法であるかどうかはわかりません。ありがとうございました。 –

+1

これは、モデルデータの変更を検出する唯一の方法です。オブザーバを使っても同じことができますが、それは同じですが、ロジックは別のクラスに移動します。もう1つの方法は、更新するときにコントローラ内のイベントを検出して起動させることです。しかし、これは複数の場所でモデルを更新すると面倒です。 – Sandeesh

0

私が考えているのは、ターゲットテーブルの更新時にトリガを作成することです。更新時に、別のテーブルにレコードを挿入することができますEVENT

コードは、EVENTテーブルから定期的にポーリングして、これらの更新を処理できます。

Oracle DBを使用している場合は、Oracle queuesが非常に便利です。

関連する問題