Laravel 5.4:使用eloquent和fillable字段更新多个表的多个模型

问题描述 投票:1回答:1

我有两个型号DriverDriverCar

我需要通过模型显示字段值让我告诉你我的表单标题代码注意DriverDriverCar有关driver_id

{!! Form::model($driver, [
            'route'=>['drivers.update', $driver],
            'method'=>'PATCH',
            'class'=>'form-horizontal'
            ]) !!}

现在我的表格领域

<div class="form-group">
     {!! Form::label('name', trans('interface.DriverName'), ['class'=>'col-sm-2 control-label']) !!}
     <div class="col-sm-10">
          {!! Form::text('name', null, ['class'=>'form-control', 'placeholder'=>trans('interface.DriverName')]) !!}
     </div>
</div>

我更新时成功更新。但DriverCar字段没有得到fillable值,如果它设置为null我必须得到它像$driver->driverCar->car_model这样的关系

<div class="form-group">
     {!! Form::label('car_model', trans('interface.carModel'), ['class'=>'col-sm-2 control-label']) !!}
     <div class="col-sm-10">
     {!! Form::text('car_model', $driver->driverCar->car_model, ['class'=>'form-control', 'placeholder'=>trans('interface.carModel')]) !!}
     </div>
</div>

是否有任何方法可以得到它fillable而不给它像$driver->driverCar->car_model这样的关系?

第二个是我的控制器我尝试一次更新两个表

public function update( Request $request, Driver $driver, DriverCar $driverCar ) {
        //dd( $driverCar );
        $input = $request->all();
        $driver->fill( $input )->save();

        $driverCar->fill( $input )->save();

        return redirect()->route( 'drivers.edit', $driver );
    }

在控制器中我也无法更新两个表,它只是更新Driver但不接触DriverCar

任何指南请。

laravel eloquent laravel-5.4
1个回答
1
投票

您没有将driverCar ID传递给update控制器方法,因此将代码更改为以下内容:

public function update( Request $request, Driver $driver)
{
    $input = $request->all();
    $driver->fill($input)->save();
    $driver->driverCar()->first()->fill($input)->save();
    return redirect()->route('drivers.edit', $driver);
}
© www.soinside.com 2019 - 2024. All rights reserved.