Как добавить поле в уведомление laravel - PullRequest
0 голосов
/ 03 марта 2020

Я использую laravel и использую систему уведомлений

, поэтому я добавляю столбец "URL" в таблицу уведомлений и хочу сохранить его в базе данных, но он не работает, и на самом деле я не знаю, как можно Я добавляю поле и сохраняю в базе данных

, вот мой класс уведомлений и уведомляю при отправке нового комментария:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class NewComment extends Notification
{
    use Queueable;
    private $details;


    /**
     * Create a new notification instance.
     *
     * @return void
     */
     public function __construct($details)
     {
       $this->details = $details;

     }


    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
      return ['database'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
      //
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
      return [
       'message' => $this->details['message'],
       'product' => $this->details['product'],
       'url' => 'test'
   ];

    }
}

, вот контроллер

  $details = [
          'message' => 'یک نظر جدید برای محصول',
          'product' => $product->title
      ];
    $user->notify(new NewComment($details));

, он дает мне это ошибка:

Общая ошибка: 1364 Поле 'url' не имеет значения по умолчанию

1 Ответ

0 голосов
/ 03 марта 2020

Результат, возвращаемый методом toArray (или toDatabase), сохраняется как JSON в существующем столбце с именем data; Так что вам не нужно (и лучше этого не делать) добавлять новый столбец к существующей таблице.

Просто удалите этот столбец, и он должен работать. позже вы можете прочитать это url из декодирования столбца JSON из data.

$data = json_decode(DB::table('notifications')->first()->data);
$url = $data->url;
...