当数据库表有新行时,我正在尝试向用户发送通知。但是我有两个问题。
第一个问题是下面的脚本。只有运行此路由的网址,我才能发送通知。 Route::get('/car/create', 'CarController@carNews');
并非在我更新数据库表时...我该如何更改它以不通过运行url而是通过更新数据库表来发送通知...(也尝试不发送整个表,只是新的添加的行。)
控制器
public function __construct()
{
$this->middleware('auth');
}
public function carNews()
{
$cars = \DB::table('cars')->get();
$user = User::first();
$user->notify(new CarNews($cars));
dd($user->notifications);
}
第二个问题是有关在刀片中显示通知。我无法到达DB通知表中的数据列。
@foreach(auth()->user()->unreadNotifications as $notification)
<a href="#" class="dropdown-item">
{{$notification->data->cars[0]['price']}}
</a>
@endforeach
这给了我下面的错误。
试图获取非对象的属性
顺便说一句,当我尝试获取这样的数据时。 {{$notification->data}}
我遇到此错误。
htmlspecialchars()期望参数1为字符串,给定数组
该列如下所示:我的路径不正确?
PS:如果需要查看其他文件,请在下面评论。
答案 0 :(得分:1)
问题1的答案;
如果我理解正确,则希望在向表中插入新行时发送一条消息。实际上,我不了解您说的是哪个数据库表,但没关系,我想,您可以在将新行插入表的操作中发送新通知。因此,您可以在插入新行时发送通知。
问题2的答案;
没有!路径没有错,它只是Json编码的数据。
之后,您必须通过json_decode
对其进行解码,然后才能访问所有对象属性。
@foreach(auth()->user()->unreadNotifications as $notification)
@php($data = json_decode($notification->data));
<a href="#" class="dropdown-item">
{{$data->cars->price}}
</a>
@endforeach
您可以尝试我上面的建议吗?