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 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...