多个处理程序的一个事件 - laravel

时间:2017-03-07 10:15:03

标签: php laravel events laravel-5.4

我希望在使用事件创建/更新/删除某个客户端时进行记录。如果不为所有操作创建事件,这是否可行?我使用最新版本的laravel(5.4 atm)

事件:

int card[i];
for (i=0;i<52;i++)
{
   card[i] = i + 1;
}

处理程序:

class EventClient
{
    use SerializesModels;
    public $client;
    public function __construct(Client $client)
    {
        $this->client = $client;
    }
}

在模型上我使用了默认的受保护$ events:

public function onCreateClient(EventClient $event) { //log }

public function onUpdateClient(EventClient $event) { //log }

public function subscribe($events)
{
    $events->listen(
        'App\Events\EventClient',
        'App\Listeners\HandleClient@onCreateClient'
    );

    $events->listen(
        'App\Events\EventClient',
        'App\Listeners\HandleClient@onUpdateClient'
    );
}

EventServiceProvider我使用了订阅者

protected $events = [
       'created' => EventClient::class,
       'updated' => EventClient::class,
   ];

当我创建/更新某个客户端时,它会记录两次,显然他会运行创建和更新的事件,因为他使用相同的事件(EventClient)。

我缺少什么?可以不创建多个事件来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

为了解决我的问题并且不为我要记录的每个动作创建具有相同代码的多个事件,我使用了Observers。

以下是我遵循的文件: https://laravel.com/docs/5.4/eloquent#observers