Laravel 通知 toArray() 未将数据保存到通知 table
Laravel notification toArray() not saving data to notifications table
我无法使数据库通知选项起作用。没有信息保存到数据库中,没有错误,Laravel Telescope 上也没有任何显示。
这是我的通知代码:
<?php
namespace App\Notifications;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class LoginNotification extends Notification implements ShouldQueue
{
use Queueable;
/**
* The user instance.
*
* @var \App\Models\User
*/
public $user;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail', 'database'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hello ' .$this->user->first_name.',')
->line('There has been a login event on your account.')
->line('If this was you, no further action is required.')
->line('If not, please reset your password using the button below and consider enabling two-factor authentication on your account')
->action('Reset Password', url('/forgot-password'));
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'user' => $this->user->id,
'ip' => session('ip_address'),
];
}
}
电子邮件已发送,但没有数据保存到通知中 table。并且只有 'mail' 被列为频道,'database' 尽管存在但没有。
我不知道问题出在哪里。
我通过将我的队列连接更改为 'sync' 来让它工作。所以问题是因为我的队列连接以前是 'database'。我正在使用这个和 运行 一个队列工作者。所以我的问题应该是当队列连接设置为数据库时如何让 toArray 方法工作。
更新:
这里没有问题,我需要做的就是在我的代码更改后停止并重新启动队列工作程序。
我无法使数据库通知选项起作用。没有信息保存到数据库中,没有错误,Laravel Telescope 上也没有任何显示。
这是我的通知代码:
<?php
namespace App\Notifications;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class LoginNotification extends Notification implements ShouldQueue
{
use Queueable;
/**
* The user instance.
*
* @var \App\Models\User
*/
public $user;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail', 'database'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hello ' .$this->user->first_name.',')
->line('There has been a login event on your account.')
->line('If this was you, no further action is required.')
->line('If not, please reset your password using the button below and consider enabling two-factor authentication on your account')
->action('Reset Password', url('/forgot-password'));
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'user' => $this->user->id,
'ip' => session('ip_address'),
];
}
}
电子邮件已发送,但没有数据保存到通知中 table。并且只有 'mail' 被列为频道,'database' 尽管存在但没有。
我不知道问题出在哪里。
我通过将我的队列连接更改为 'sync' 来让它工作。所以问题是因为我的队列连接以前是 'database'。我正在使用这个和 运行 一个队列工作者。所以我的问题应该是当队列连接设置为数据库时如何让 toArray 方法工作。
更新: 这里没有问题,我需要做的就是在我的代码更改后停止并重新启动队列工作程序。