Laravel 5.4, 5.3: personalizar ou estender notificações - modelo de banco de dados
IMHO, o canal atual do banco de dados para salvar notificações no Laravel é um design muito ruim:
Você não pode usar cascatas de chaves estrangeiras em itens para limpar as notificações de um item excluído, por exemploProcurando atributos customizados nodata
coluna (convertida em Matriz) não é idealComo você estenderia a extensão doDatabaseNotification
Modelo no pacote do fornecedor?
Eu gostaria de adicionar colunasevent_id
, question_id
, user_id
(o usuário que criou a notificação) etc ... para o laravel padrãonotifications
mesa
Como você substitui osend
função para incluir mais colunas?
No:
vendor/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php
O código:
class DatabaseChannel
{
/**
* Send the given notification.
*
* @param mixed $notifiable
* @param \Illuminate\Notifications\Notification $notification
* @return \Illuminate\Database\Eloquent\Model
*/
public function send($notifiable, Notification $notification)
{
return $notifiable->routeNotificationFor('database')->create([
'id' => $notification->id,
'type' => get_class($notification),
\\I want to add these
'user_id' => \Auth::user()->id,
'event_id' => $notification->type =='event' ? $notification->id : null,
'question_id' => $notification->type =='question' ? $notification->id : null,
\\End adding new columns
'data' => $this->getData($notifiable, $notification),
'read_at' => null,
]);
}
}