Как добавить пользовательское событие в модель Laravel - PullRequest
0 голосов
/ 13 октября 2019

У меня есть модель оплаты, и я хочу запустить пользовательское событие после подтверждения оплаты.

Код моей модели:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Payment extends Model
{
    protected $dates = [
        'created_at', 'updated_at', 'confirmed_at',
    ];

    public function confirmed(){
        $this->setAttribute('confirmed_at', now());
        $this->setAttribute('status', 'confirmed');
    }
}

1 Ответ

0 голосов
/ 13 октября 2019

Я могу запустить событие confirmed в методе Payment->confirmed(), например:

    public function confirmed(){
        // todo, throw an exception if already confirmed

        $this->setAttribute('confirmed_at', now());
        $this->setAttribute('status', 'confirmed');

        // fire custom event
        $this->fireModelEvent('confirmed');
    }

и зарегистрировать пользовательское событие в $dispatchesEvents

 protected $dispatchesEvents = [
        'confirmed' =>  \App\Events\Payment\ConfirmedEvent::class
 ];

Готово. Событие \App\Events\Payment\ConfirmedEvent::class будет вызываться при вызове метода Model confirmed().

Также рекомендуется вызывать исключение, если метод valid () вызывается дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...