Laravel Notification с ShouldQueue: в базе данных хранятся разные [данные] - PullRequest
0 голосов
/ 13 мая 2018

У меня есть ServiceOrderCreated.php уведомление и я хочу использовать ShouldQueue, но в нем хранится уведомление, кроме случаев, когда я не использую ShouldQueue.

Это данные, отправленные в ServiceOrderCreated Class:

//notification
class ServiceOrderCreated extends Notification implements ShouldQueue
{
use Queueable;

protected $serviceOrder;

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

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


/**
 * Get the array representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return json
 */
public function toDatabase($notifiable)
{
    //dd($this->serviceOrder);
    return [
        $this->serviceOrder
    ];
}

/**
 * Get the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
public function toMail($notifiable)
{
    $message = new MailMessage;
    $message->subject('Sportservis-Hostivice: Nová zákazka č. '.$this->serviceOrder->id);
    foreach ($this->serviceOrder->serviceOrderItem as $item) {
        $message->line('<li>'.$item->customerOrderAsset->name.' - '.$item->serviceType->name.' - '.$item->price.'</li>');
    }
    return $message;
}

Проблема в том, что когда я удаляю "Implements ShouldQueue", он сохраняет всю коллекцию ($newServiceOrder) в таблице уведомлений (столбец [data]). Когда «внедряет ShouldQueue», в таблице уведомлений сохраняется только голая модель без связей.

Есть идеи? Я что-то пропустил?

UPDATE

Это коллекция, которая передается из ServiceOrderController.php в уведомление.

$newServiceOrder = ServiceOrder::with(['serviceOrderItem', 'serviceOrderItem.serviceType', 'serviceOrderItem.customerOrderAsset', 'customer'])->find($serviceOrder->id)
$newServiceOrder->customer->notify(new ServiceOrderCreated($newServiceOrder));

ОБНОВЛЕНИЕ 2:

Это то, что хранится в таблице уведомлений, когда я не использую ShouldQueue : https://pastebin.com/hXF03tEa

И это то, что сохраняется, когда я использую ShouldQueue : https://pastebin.com/Vb6hFZkH

...