Merhabalar.
Notification sistemini öğrenmeye çalışırken yaptığım çalışmayı paylaşmak istiyorum.
Buradaki senaryom şu şekilde: Herhangi bir kullanıcı bir kayıt eklediğinde, sistemdeki diğer tüm kullanıcılara bildirim gönderilmesini sağlamaktı.
Yararlandığım kaynaklar:
https://tallpad.com/series/inertiajs-laravel-misc/lessons/notifications-with-laravel-echo-and-pusher-in-inertiajs-applications-part-one
https://laravel.com/docs/8.x/notifications
// Database yöntemiyle notification kullanılacak ise, gerekli olan tablo için migration oluşturur
php artisan notification:table
// Notification table migrate edilir
php artisan migrate
// Notificaion sınıfı üretiyoruz
php artisan make:notifiation StoredProjectNotification
app\Notifications\StoredProjectNotification.php
protected $project;
protected $user;
public function __construct(User $user, Project $project)
{
$this->project = $project;
$this->user = $user;
}
public function via($notifiable)
{
return ['database'];
}
public function toArray($notifiable)
{
return [
'user'=>$this->user->id,
'project'=>$this->project->id,
];
}
app\Http\Middleware\HandleInertiaRequests.php
public function share(Request $request)
{
$user = Auth::user();
return array_merge(parent::share($request), [
...
'unreadNotificationsCount' => $user ? $user->unreadNotifications()->count() : []
]);
}
app\Http\Controllers\ProjectController.php
use Illuminate\Support\Facades\Notification;
public function store(StoreProjectRequest $request)
{
$result = Auth::user()->projects()->create(
$request->validated()
);
// Sistemdeki tüm user'lara bildirim göndermek için
if($result){
Notification::send( User::all(), new StoredProjectNotification(Auth::user(), $result));
}
return Redirect::route('project_index')->with('success', 'Proje Oluşturuldu.');
}