Php Laravel、beanstalkd和多个数据库

Php Laravel、beanstalkd和多个数据库,php,laravel,laravel-5.3,beanstalkd,laravel-forge,Php,Laravel,Laravel 5.3,Beanstalkd,Laravel Forge,我有一个项目,其中每个客户都有一个唯一的子域和他们自己的数据库 我想使用Laravel的队列来处理作业和发送通知。但是,由于SerializesModels特性仅序列化/取消序列化模型id,因此作业始终尝试从主数据库检索数据,而不管是哪个客户端启动作业 有没有办法指定db连接?如果这不可行,我愿意接受建议的备选工作流程 从Laravel文档: 在处理作业时,雄辩的模型将优雅地序列化和非序列化。如果排队作业在其构造函数中接受雄辩的模型,则只有模型的标识符将序列化到队列中。当实际处理作业时,队列系统

我有一个项目,其中每个客户都有一个唯一的子域和他们自己的数据库

我想使用Laravel的队列来处理作业和发送通知。但是,由于SerializesModels特性仅序列化/取消序列化模型id,因此作业始终尝试从主数据库检索数据,而不管是哪个客户端启动作业

有没有办法指定db连接?如果这不可行,我愿意接受建议的备选工作流程

从Laravel文档:

在处理作业时,雄辩的模型将优雅地序列化和非序列化。如果排队作业在其构造函数中接受雄辩的模型,则只有模型的标识符将序列化到队列中。当实际处理作业时,队列系统将自动从数据库中重新检索完整的模型实例。它对您的应用程序是完全透明的,可以防止序列化完整的雄辩模型实例时可能出现的问题

示例:因此,从OrderController以正确的顺序调度作业

dispatch(new SendEventSignupEmail($order));
订单是通过job类中的构造函数注入的

 public function __construct(Order $order)
{
    //
    $this->order = $order;
}
据我所知,模型id被提取并序列化,然后发送到handle方法,在该方法中,模型被取消序列化,并从数据库中重新检索模型

public function handle()
{
  Mail::to($this->order)->send(new EventSignup($this->order));
}  

问题是,此时,$this->order实际上是一个不同的顺序(或者作业失败),因为serializesModels特性从默认数据库检索模型。

serializesModels特性(在我看来)有点不直观。正如您所发现的,它只序列化ID,然后点击数据库以重新水化对象。然而,序列化模型并不需要这种特性

删除trait,它应该将对象作为一个整体序列化,这样您的作业就不必点击数据库来获取其数据