Laravel Eloquentモデルでイベントをディスパッチする方法


  1. イベントの作成 まず、イベントを作成する必要があります。イベントはapp/Eventsディレクトリに作成されます。以下は、例としてUserCreatedイベントを作成する方法です。
php artisan make:event UserCreated
  1. イベントリスナーの作成 次に、イベントリスナーを作成します。イベントリスナーはapp/Listenersディレクトリに作成されます。以下は、例としてSendWelcomeEmailリスナーを作成する方法です。
php artisan make:listener SendWelcomeEmail --event=UserCreated
  1. イベントのディスパッチ イベントをディスパッチするには、Eloquentモデル内でdispatch()メソッドを呼び出します。以下は、Userモデル内でUserCreatedイベントをディスパッチする例です。
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Events\UserCreated;
class User extends Model
{
    protected $dispatchesEvents = [
        'created' => UserCreated::class,
    ];
}

上記の例では、Userモデルのcreatedイベントが発生した際にUserCreatedイベントがディスパッチされます。

これで、特定のアクション(ここではユーザーの作成)が発生した場合に、関連するイベントリスナーが実行されるようになります。イベントリスナー内で必要な処理(例: メールの送信)を実装してください。

以上が、LaravelのEloquentモデルでイベントをディスパッチする方法です。これにより、柔軟なイベント駆動型のアプリケーションを作成することができます。