Как обновить данные двух таблиц с помощью построителя запросов - PullRequest
0 голосов
/ 22 апреля 2019

У меня проблема с редактированием и обновлением с 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();
      }
    }
  }

Я хочу сохранить редактирование со старым (id). не создавать новые. Пожалуйста, помогите спасибо. Я не знаю, где код ошибся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...