php 如何在控制器- Laravel vue内部的一个功能中更新多个模型

wko9yo5t  于 2022-12-10  发布在  PHP
关注(0)|答案(1)|浏览(235)

我正在尝试更新多个模型,相互关联的PK和FK。
我尝试更新第一个模型“matter_dispute”并成功更新,所以我重复同样的操作来更新另一个模型“matter_dispute_c”,但它没有影响任何东西。
下面是控制器中的更新函数:

public function update(Request $request, matter_dispute $matter_dispute, matter_dispute_b $matter_dispute_b, matter_dispute_c $matter_dispute_c)
{
    $request->validate([
        'pic_1'=>'required',
        'pic_2'=>'required',

        'remarks'=>'required',
        'file_ref_no'=>'required',
    ]);

    $postData = [
        'pic_1' => $request->pic_1,
        'pic_2' => $request->pic_2,
    ];

    $postData2 = [
        'remarks' => $request->remarks,
        'file_ref_no' => $request->file_ref_no,
    ];

    $matter_dispute->update($postData);
    $matter_dispute_c->update($postData2);
}

我不确定这是否是正确的方法,如果我使用查询是不是更好?
因为我获取数据的方式如下所示:

$matter_dispute_all_tables = DB::table('matter_disputes')
    ->join('matter_dispute_bs', 'matter_disputes.id', '=', 'matter_dispute_bs.matter_disputes_id')
    ->join('matter_dispute_cs', 'matter_disputes.id', '=', 'matter_dispute_cs.matter_disputes_id')
    ->select('matter_disputes.*', 'matter_dispute_bs.*', 'matter_dispute_cs.*')
    ->get()
;

return response()->json($matter_dispute_all_tables);

那么,哪种方法更好?我如何才能实现它?

c2e8gylq

c2e8gylq1#

答案是:
我使用Laravel雄辩如下所示:

DB::table('matter_disputes')
    ->join('matter_dispute_bs', 'matter_disputes.id', '=', 'matter_dispute_bs.matter_disputes_id')
    ->join('matter_dispute_cs', 'matter_disputes.id', '=', 'matter_dispute_cs.matter_disputes_id')
    ->where('matter_disputes.id',$matter_dispute->id)
    ->update([
        'pic_1' => $request->pic_1,
        'pic_2' => $request->pic_2,
        'remarks' => $request->remarks,
        'file_ref_no' => $request->file_ref_no,
    ]);

相关问题