我试图对包含具有二进制ID的模型(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
方法中,我将二进制id转换为字符串,因此可以将其正确编码为json。
不幸的是,当我想对邮件进行排队时,永远不会调用serialize
方法。
这是框架中的错误还是我错过了什么?
此外,我在PHP文档中注意到,在使用Serializable
界面时,不再支持__sleep
和__wakeup
方法:
实现此接口的类不再支持__sleep()和 __wakeup()。
但是Illuminate\Queue\SerializesModels
特质似乎会覆盖它们......
修改
我正在使用this trait for my binary ids。
在我的serialize
方法中,我只需拨打$this->toArray()
。