如何使用查询生成器更新2个表数据

时间:2019-04-22 13:58:12

标签: laravel

我在使用查询生成器对2个表进行编辑和更新时遇到问题。 --->我按下提交按钮后---->数据插入新行---->不更新当前数据。

这是我的功能编辑(仅用于查看旧数据)

public function edit(Request $request, $id){
    $tax_rate = TaxRate::find($id);
    $tax_rate_details = TaxRateDetail::where('tax_rate_id', $id)->get();
    $country = Country::all();
    $geo_zones = GeoZone::all();
    //dd($tax_rate);
    //dd($tax_rate_details);
    //dd($geo_zones);
    if(!$tax_rate) {

       return redirect('/');
     }
    return view('tax_management.edit',['country' => $country , 'tax_rate'=>$tax_rate , 'geo_zones'=>$geo_zones, 'tax_rate_details'=>$tax_rate_details]);
  }

这是我的更新(我进行验证,而saveTax是保存的一部分)

public function update(Request $request, $id){
    $this->validate($request,[
      'country_id'=> 'required',
      'tax_type' => 'required',
      'name' => 'required|max:100',
      'code' => 'required|max:50'
    ]);
    //dd($request->input());
    DB::beginTransaction();

    try{
      $tax_rate = TaxRate::find($id);
      $tax_rate_details = TaxRateDetail::where('tax_rate_id', $id)->get();

      $this->saveTax($request, $tax_rate);

      DB::commit();

      return redirect()->route('tax_management.index');
    } catch (\Exception $ex){
      //dd($ex);
      DB::rollback();
      return back()->withInput()->withErrors('Fail to save');
    }
  }

这是我的功能save()

private function saveTax(Request $request, $tax_rate){
    $tax_rate->country_id = $request->input('country_id');
    $tax_rate->geo_zone_id = $request->input('geo_zone_id');
    $tax_rate->tax_type = $request->input('tax_type');
    $tax_rate->name = $request->input('name');
    $tax_rate->code = $request->input('code');
    $tax_rate->description = $request->input('description');
    if(!empty($request->input('active'))){
      $tax_rate->active =1;
    } else {
      $tax_rate->active =0;
    }
    $tax_rate->save();

    if($tax_rate->tax_rate_id) {
      TaxRateDetail::where('tax_rate_id', $tax_rate->tax_rate_id)->delete();
    }
    if($request->input('tax_rate_details')){
      foreach ($request->input('tax_rate_details') as $key => $value) {
        $tax_rate_detail = new TaxRateDetail();
        $tax_rate_detail->tax_rate_id = $tax_rate->tax_rate_id;
        $tax_rate_detail->priority = $value['priority'];
        $tax_rate_detail->date_from = $value['date_from'];
        $tax_rate_detail->date_to = $value['date_to'];
        $tax_rate_detail->rate = $value['rate'];
        $tax_rate_detail->type = $value['type'];
        $tax_rate_detail->active = $value['active'];
        //dd($tax_rate_detail);
        $tax_rate_detail->save();
      }
    }
  }

我想用old(id)保存编辑更新。不创建新的。请帮忙谢谢。我不知道代码哪里出了问题。

0 个答案:

没有答案