当数据库有新行Laravel

时间:2019-04-04 03:02:04

标签: php laravel

当数据库表有新行时,我正在尝试向用户发送通知。但是我有两个问题。

已更新

第一个问题是下面的脚本。只有运行此路由的网址,我才能发送通知。 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为字符串,给定数组

enter image description here

该列如下所示:我的路径不正确?

PS:如果需要查看其他文件,请在下面评论。

1 个答案:

答案 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

您可以尝试我上面的建议吗?