Iman Sugirman

Laravel Notification Menggunakan Delay Yang Diinginkan

28 Juli 2022

Laravel Notification menggunakan delay yang diinginkan dengan menjeda beberapa menit atau bisa menggunakan Carbon.

Dengan Menggunakan Carbon anda bisa menggunakan Notification di Laravel sesuai yang diinginkan, mari sekarang kita mulai.

Buat Notification Di Laravel

Buat Notifikasi dengan Mengirim Email dan Database

php artisan make:notification SendEmailNotification --markdown=email.notification

Lalu akan terbuat 2 file yaitu di folder App\Notifications dan di folder resources/views/email nah sekarang kita akan membuat Action untuk mengirimkan Notifikasi tersebut dengan menggunakan Controller

php artisan make:controller KirimNotificationController

Lalu buka file KirimNotificationController di folder App\Http\Controllers dan edit :

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Invoice; use App\Models\User; class KirimNotificationController extends Controller { public function kirim($id) { // Delay selama 10 Menit $delay = now()->addMinutes(10); // Delay Selama 10 Detik // $delay = now()->addSeconds(10); $invoice = Invoice::find($id) $user = User::find(1) $user->notify((new SendEmailNotification($invoice))->delay($delay)); } }

penjelasan bahwa dengan kode diatas adalah notifikasi akan dikirim dengan jeda waktu 10 menit menggunakan DateTime menggunakan Carbon atau now() disini bisa anda lihat Now Helper

Atau anda juga bisa menspesifikasikan beberapa notifikasi dengan delay yang berbeda di Laravel 9 :

$user->notify((new SendEmailNotification($invoice))->delay([ 'mail' => now()->addMinutes(5), 'sms' => now()->addMinutes(10), ]));

Bahkan anda juga bisa mendefinisikan delay di file SendEmailNotification dengan menambahkan function withDelay seperti ini :

/** * Determine the notification's delivery delay. * * @param mixed $notifiable * @return array */ public function withDelay($notifiable) { return [ 'mail' => now()->addMinutes(5), 'sms' => now()->addMinutes(10), ]; }

jangan lupa ketika anda membuat notification diatas maka harus di implementasikan ShouldQueue di file SendEmailNotification seperti berikut :

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; class SendEmailNotification extends Notification { use Queueable; ... }

Menjadi seperti ini :

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; class SendEmailNotification extends Notification implements ShouldQueue { use Queueable; ... }

Demikian tutorial Laravel Notification Menggunakan Delay Yang Diinginkan yang bisa saya share. Happy Coding...