Merhaba, laravel'i yeni yeni öğrenme aşamasındayım. Yaptığım projede kullanıcının oluşturduğu gönderi ve soruları var. Başka bir kullanıcı oluşturulan gönderiye yorum yaptığında veya soruya cevap verdiğinde içeriğin sahibine bildirim göndermek istiyorum. Kurduğum yapı aşağıdaki gibi, sistem sorunsuz çalışıyor. Konuyu açmamdaki amaç doğru bir mantıkla mı yapmışım, öğrenmişken yanlış öğrenmek istemiyorum, fikir verirseniz sevinirim.
Events (PostCommented, QuestionAnswered)
Listeners(PostCommentActionListener, QuestionAnswerActionListener)
Notification(PostCommentNotification, QuestionAnswerNotification)
Aşağıya sadece gönderiye yorum yapıldığında bildirimi kaydeden kodları yazdım, bunun aynısının soru/cevap kısmı için olanı da var.
#PostCommented
class PostCommented
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $comment;
public $user;
public function __construct($comment, $user)
{
$this->comment = $comment;
$this->user = $user;
}
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
#PostCommentActionListener
class PostCommentActionListener
{
public function __construct()
{
//
}
public function handle(PostCommented $postCommented)
{
$comment = $postCommented->comment;
$postCommented->user->notify(new PostCommentNotification($comment));
}
}
#PostCommentNotification
class PostCommentNotification extends Notification
{
use Queueable;
public function __construct($comment)
{
$this->comment = $comment;
}
public function via($notifiable)
{
return ['database'];
}
public function toDatabase(mixed $notifiable)
{
return [
'message' => auth()->user()->user_name . ' gönderine yorum yaptı',
'time' => $this->comment->created_at,
'link' => route('app.post.detail', $this->comment->post->slug)
];
}
public function toArray($notifiable)
{
return [
//
];
}
}
#EventServiceProvider
class EventServiceProvider extends ServiceProvider
{
/**
* The event to listener mappings for the application.
*
* @var array<class-string, array<int, class-string>>
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
PostCommented::class => [
PostCommentActionListener::class,
],
QuestionAnswered::class => [
QuestionAnswerActionListener::class,
]
];
}
![https://prnt.sc/1DZ7wna29jsP](https://)