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

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

來(lái)自觀察者 laravel 的訪問(wèn)表單請(qǐng)求

來(lái)自觀察者 laravel 的訪問(wèn)表單請(qǐng)求

PHP
喵喵時(shí)光機(jī) 2021-11-26 16:51:14
我正在嘗試清理我的控制器。我有很多表單字段,所以我想使用觀察者為與主模型有關(guān)系的其他模型插入我已經(jīng)成功地將請(qǐng)求插入到控制器中的數(shù)據(jù)庫(kù)中,但它似乎又長(zhǎng)又重??聪旅娴拇afunction insert(Request $request){ $bankStatementName = time().'.'.request()->bankStatement->getClientOriginalExtension();request()->bankStatement->move(public_path('bankStatement'), $bankStatementName);$identityName = time().'.'.request()->identity->getClientOriginalExtension();request()->identity->move(public_path('identity'), $identityName); $passportName = time().'.'.request()->passport->getClientOriginalExtension();request()->passport->move(public_path('passport'), $passportName); $customer = Customer::find(Auth::user()->id); $relations = new Customer_relationship([                      'kinName' => $request->kinName,                      'kinGender' => $request->kinGender,                      'kinEmail' => $request->kinEmail,                      'kinRelation' => $request->kinRelation,                      'kinAddress' =>  $request->kinAddress                  ]); $company = new Customer_company([                'compName' => $request->compName,                'compEmail' => $request->compEmail,                'compPhone' => $request->compPhone,                'compAddress' => $request->compAddress             ]); $bank = new Customer_bank([             'accNumber' => $request->accNumber,             'bankName' => $request->bankName,             'accName' => $request->accName         ]); $document = new Customer_document([        'identity' => $identityName,        'bankStatement' => $bankStatementName,        'passport' => $passportName    ]); $customer->relation()->save($relations); $customer->company()->save($company); $customer->bank()->save($bank); $customer->document()->save($document);}那么如何從觀察者的更新功能訪問(wèn)表單請(qǐng)求字段以進(jìn)行控制器清理
查看完整描述

1 回答

?
斯蒂芬大帝

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

歡迎來(lái)到 SO!


如果你想在這里使用觀察者,你應(yīng)該首先閱讀https://laravel.com/docs/5.8/eloquent#observers和https://laravel.com/docs/5.8/queues


如果您擁有父模型所需的所有數(shù)據(jù),這可能會(huì)起作用,因?yàn)槟恍鑼⒃撃P蛡鬟f給觀察者觸發(fā)的作業(yè)。如果不是,那么觀察者/工作可能不是您的最佳解決方案。相反,我可能會(huì)創(chuàng)建某種服務(wù),您可以在其中轉(zhuǎn)移創(chuàng)建這些關(guān)系的責(zé)任。這樣你就可以保持一個(gè)干凈的控制器級(jí)別,它只調(diào)用一個(gè)服務(wù)來(lái)創(chuàng)建模型,然后返回結(jié)果。


這方面的一個(gè)例子可能是:


namespace App\Http\Controllers;


use App\Models\Something\SomeService;


class SomeController extends Controller

{

    /**

     * @var SomeService 

     */

    private $someService;


    public function __construct(SomeService $someService)

    {

        $this->someService = $someService;

    }


    public function store()

    {

        $request = request();

        $name    = $request->input('name');



        $something = $this->someService->create($name);


        return response()->json(['data' => $something]);

    }

}

namespace App\Models\Something;


class SomeService

{

    public function create(string $name): Something

    {

        // Do whatever in here...

    }

}

這是我將如何做的一個(gè)簡(jiǎn)化示例。希望對(duì)你有所幫助。


如果您仍然想使用工作來(lái)解決這個(gè)問(wèn)題,那么我仍然認(rèn)為觀察者不是您的正確解決方案,因?yàn)樗鼈兪窃谀P褪录嫌|發(fā)的,例如created. 這意味著你在那個(gè)時(shí)候?qū)o(wú)法訪問(wèn)請(qǐng)求對(duì)象,而只是被創(chuàng)建(模型)。相反,您可以直接從控制器/服務(wù)分派作業(yè)。我在答案頂部發(fā)布的隊(duì)列鏈接中對(duì)此進(jìn)行了全部描述。


查看完整回答
反對(duì) 回復(fù) 2021-11-26
  • 1 回答
  • 0 關(guān)注
  • 196 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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