Вам необходимо создать собственное событие, сначала создайте его:
php artisan make:event InvoiceEmailSentEvent
внутри Events\InvoiceEmailSentEvent.php
добавьте следующее:
public $invoice;
public function __construct($invoice)
{
$this->invoice = $invoice;
}
Создайте слушатель события:
php artisan make:listener InvoiceEmailSentListener
Для функции handle()
внутри Listeners\InvoiceEmailSentListener.php
добавьте
//import your Mailable up here
public function handle(InvoiceEmailSentEvent $event)
{
// You don't have to sent email here, but I just added it if $invoice contains an email field
$email = $event->invoice->email;
Mail::to($email)->send(new Your_Mailable_Class_Goes_Here($event->invoice));
// UPDATE INVOICE STATUS HERE
}
Зарегистрируйте свое событие и слушателя в $listen
массив в App\Providers\EventServiceProvider.php
'App\Events\InvoiceEmailSentEvent' => [
'App\Listeners\InvoiceEmailSentListener',
],
Наконец, в вашем контроллере вы можете вызвать событие, передав свой счет, который вы хотите обновить, например,
$invoice = Invoice::findOrFail($invoice_id)->first();
event(new InvoiceEmailSentEvent($invoice));