Jak vytvořit oznámení databáze Laravel

Úvod Pokud chcete implementovat Oznámení databáze Laravel ve vaší aplikaci Laravel, jste na správném místě. Tento návod vás provede procesem vytváření a odesílání databázových ozn...

Poptat web

16. 07. 2025

Jak vytvořit oznámení databáze Laravel

Úvod

Pokud chcete implementovat Oznámení databáze Laravel ve vaší aplikaci Laravel, jste na správném místě. Tento návod vás provede procesem vytváření a odesílání databázových oznámení pomocí integrovaného systému oznámení Laravel.

Co jsou oznámení databáze Laravel?

Laravel poskytuje jednotné rozhraní API pro zasílání oznámení prostřednictvím různých kanálů, včetně pošty, SMS, Slacku a databáze. Oznámení databáze jsou uloženy v databázi vaší aplikace a mohou být kdykoli načteny a zobrazeny uživatelům.

Krok 1: Přidání oznamované vlastnosti do modelu uživatele

Chcete-li používat oznámení. User model musí používat Notifiable vlastnost:

use Illuminate\Notifications\Notifiable;
 
class User extends Authenticatable
{
use Notifiable;
}

Tato vlastnost poskytuje uživatelskému modelu přístup k pomocným metodám pro odesílání a správu oznámení.

Krok 2: Vytvoření tabulky oznámení

Nejprve zveřejněte migraci oznámení:

php artisan notifications:table

Poté spusťte migraci:

php artisan migrate

Tím se vytvoří notifications tabulku v databázi, do které se budou ukládat všechna oznámení.

Krok 3: Vytvoření třídy oznámení

Spusťte příkaz Artisan a vygenerujte oznámení:

php artisan make:notification NewUserRegistered

Tím se vytvoří soubor v app/Notifications/NewUserRegistered.php.

Krok 4: Definice metody toDatabase()

Otevřít NewUserRegistered.php a definovat, jak má být oznámení uloženo v databázi pomocí příkazu toDatabase() metoda:

namespace App\Notifications;
 
use Illuminate\Notifications\Notification;
use App\Models\User;
 
class NewUserRegistered extends Notification
{
protected $newUser;
 
public function __construct(User $newUser)
{
$this->newUser = $newUser;
}
 
public function via(object $notifiable): array
{
return ['database'];
}
 
public function toDatabase(object $notifiable): array
{
return [
'id' => $this->newUser->id,
'name' => $this->newUser->name,
'email' => $this->newUser->email,
];
}
}

Krok 5: Odeslání oznámení

Oznámení můžete zaslat jakémukoli oznamovanému subjektu (obvykle se jedná o User model):

use App\Models\User;
use App\Notifications\NewUserRegistered;
 
$user = User::find(1); // Admin user
$newUser = User::find(2); // Newly registered user
 
$user->notify(new NewUserRegistered($newUser));

Případně můžete použít Notification fasáda:

use Illuminate\Support\Facades\Notification;
 
Notification::send($user, new NewUserRegistered($newUser));

Krok 6: Získání a zobrazení oznámení

Oznámení uživatele můžete načíst pomocí příkazu notifications vztah:

$notifications = auth()->user()->notifications;

Jejich zobrazení:

@foreach(auth()->user()->notifications as $notification)
<div class="notification">
New user registered: {{ $notification->data['name'] }} ({{ $notification->data['email'] }})
</div>
@endforeach

Krok 7: Označení oznámení jako přečtených

Oznámení můžete označit jako přečtená pomocí:

auth()->user()->unreadNotifications->markAsRead();

Nebo označte jedno oznámení:

$notification = auth()->user()->notifications()->first();
$notification->markAsRead();

Krok 8: Vytvoření fronty oznámení (volitelné)

Chcete-li oznámení zařadit do fronty, implementujte příkaz ShouldQueue a použít rozhraní Queueable vlastnost:

namespace App\Notifications;
 
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Models\User;
 
class NewUserRegistered extends Notification implements ShouldQueue
{
use Queueable;
 
protected $newUser;
 
public function __construct(User $newUser)
{
$this->newUser = $newUser;
}
 
public function via(object $notifiable): array
{
return ['database'];
}
 
public function toDatabase(object $notifiable): array
{
return [
'id' => $this->newUser->id,
'name' => $this->newUser->name,
'email' => $this->newUser->email,
];
}
}

Tip: Ujistěte se, že váš pracovník fronty běží s funkcí php artisan queue:work zpracovávat oznámení ve frontě.

Závěr

Vytvoření Oznámení databáze Laravel systém je čistý a jednoduchý. Oznámení jsou účinným způsobem, jak zlepšit zapojení uživatelů, a Laravel umožňuje jejich neuvěřitelně snadnou implementaci.

Nebojte se to rozšířit o vysílání, aktualizace frontendů nebo uživatelské předvolby typů oznámení.

Původní článek publikoval Nabil Hassen.