我正在為 Laravel 中的電子商務(wù)應(yīng)用程序制作訂單提交功能。對(duì)于每次提交的訂單,我都會(huì)在我的orders表中創(chuàng)建一條訂單記錄。然后他們將項(xiàng)目添加到order_items指向我剛剛創(chuàng)建的訂單的表中。我的控制器如下:DB::transaction(function () use ($customer, $request) { $order = Order::create([ 'order_number' => Order::createOrderNumber(), 'customer_id' => $customer->id, 'note' => $request->input('note'), 'status' => 'PENDING', 'request_date' => $request->input('date'), ]); $parts = json_decode($request->input('parts')); foreach ($parts as $part) { foreach ($part->selections as $selection) { $order_item = OrderItem::create([ 'order_id' => $order->id, 'selection_id' => $selection->id, 'quantity' => $selection->quantity, 'price' => Selection::find($selection->id)->first()->price ]); if (isset($selection->file)) { $file = $request->file('files')[$selection->file]; $filename_original = $file->getClientOriginalName(); $extension = $file->extension(); $filename = md5(microtime()).'.'.$extension; try { $file->storeAs('/files/order/'.$order->order_number, $filename); } catch (Exception $e) { } $order_item->filename = $filename; $order_item->filename_original = $filename_original; $order_item->save(); } } }這適用于訂單創(chuàng)建?,F(xiàn)在,我正在嘗試在完成后發(fā)送一封包含所有訂單詳細(xì)信息的確認(rèn)電子郵件。我可以直接將 mailable 添加到我的控制器,這樣就可以正常工作了。但我試圖通過(guò)使用模型觀察器將所有“副作用”與控制器分開。所以我試著從觀察者那里發(fā)送電子郵件Order,聽createdpublic function created(Order $order){ Mail::to($order->customer->email)->send(new OrderMail($order, 'confirmation'));}雖然電子郵件已發(fā)送出去,但由于 myOrder是在添加 all 之前創(chuàng)建的items,并且觀察者會(huì)在模型創(chuàng)建后立即觸發(fā),所以當(dāng)我在電子郵件視圖中使用關(guān)系時(shí),它總是返回空數(shù)組有什么方法可以讓我仍然可以將我的電子郵件發(fā)送過(guò)程與控制器分開,但會(huì)等到我的“添加項(xiàng)目到訂單”過(guò)程完成?
Laravel - 與模型觀察者發(fā)送一對(duì)多關(guān)系的電子郵件
慕的地8271018
2023-04-21 17:35:28