Я пытаюсь поставить в очередь почтовое сообщение, содержащее свойство с моделью (Order
), который имеет двоичный идентификатор.
<?php
namespace App\Mail;
use App\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class OrderShipped extends Mailable
{
use Queueable, SerializesModels;
/**
* The order instance.
*
* @var Order
*/
public $order;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.orders.shipped');
}
}
Order
реализует Serializable
интерфейс. в serialize
метод модели Я конвертирую двоичный идентификатор в строку, чтобы он мог быть правильно закодирован в json.
К сожалению serialize
метод никогда не вызывается, когда я хочу поставить в очередь почту.
Это ошибка в структуре или я что-то упустил?
Также я заметил в документах PHP, что при использовании Serializable
интерфейс, __sleep
а также __wakeup
методы больше не поддерживаются:
Классы, которые реализуют этот интерфейс, больше не поддерживают __sleep () и
__просыпайся().
Но Illuminate\Queue\SerializesModels
черта, кажется, перекрывает их …
РЕДАКТИРОВАТЬ
я использую эта черта для моих двоичных идентификаторов.
В моем serialize
метод, который я просто называю $this->toArray()
,
Задача ещё не решена.
Других решений пока нет …