- イベントの作成
まず、イベントを作成する必要があります。イベントは
app/Events
ディレクトリに作成されます。以下は、例としてUserCreated
イベントを作成する方法です。
php artisan make:event UserCreated
- イベントリスナーの作成
次に、イベントリスナーを作成します。イベントリスナーは
app/Listeners
ディレクトリに作成されます。以下は、例としてSendWelcomeEmail
リスナーを作成する方法です。
php artisan make:listener SendWelcomeEmail --event=UserCreated
- イベントのディスパッチ
イベントをディスパッチするには、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モデルでイベントをディスパッチする方法です。これにより、柔軟なイベント駆動型のアプリケーションを作成することができます。