第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Laravel - 與模型觀察者發(fā)送一對(duì)多關(guān)系的電子郵件

Laravel - 與模型觀察者發(fā)送一對(duì)多關(guān)系的電子郵件

PHP
慕的地8271018 2023-04-21 17:35:28
我正在為 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ò)程完成?
查看完整描述

1 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

為了隔離電子郵件進(jìn)程,您可以使用 Laravel Event/Listener 系統(tǒng)。例如,您可以創(chuàng)建名為的事件OrderSubmitted及其偵聽器SendEmailNotification


查看完整回答
反對(duì) 回復(fù) 2023-04-21
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)