Ú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:workzpracová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í.