我有一個項目,其中每個客戶端都有一個唯一的子域和他們自己的數據庫。Laravel,beanstalkd和多個數據庫
我想使用Laravel的隊列處理作業併發送通知。但是,由於SerializesModels特徵僅序列化/反序列化模型ID,所以作業始終嘗試從主數據庫檢索數據,而不管哪個客戶端啓動作業。
有沒有一種方法可以指定數據庫連接?如果這不可行,我願意接受建議的替代工作流程。
從Laravel文檔:
雄辯車型將正常序列化,序列化時,在處理作業。如果您的排隊作業在其構造函數中接受了Eloquent模型,則只有模型的標識符將被序列化到隊列中。實際處理作業時,隊列系統將自動從數據庫中重新獲取完整模型實例。這對您的應用程序來說都是完全透明的,並且可以防止序列化完整的Eloquent模型實例時可能出現的問題。
實例:那麼分派作業從OrderController
dispatch(new SendEventSignupEmail($order));
正確的順序順序通過構造在作業類注射
public function __construct(Order $order)
{
//
$this->order = $order;
}
這是我的理解是模型id被提取並序列化併發送到句柄方法,在句柄中它是非序列化的,模型從數據庫中重新檢索。
public function handle()
{
Mail::to($this->order)->send(new EventSignup($this->order));
}
的問題是,在這一點上,$這個 - >訂單實際上是一個不同的順序(或任務失敗),因爲serializesModels特徵檢索從默認的數據庫模型。