Laravel 5.4:使用 eloquent 和可填充字段更新具有多个 table 的多个模型

Laravel 5.4: Using eloquent and fillable field to update multiple model with multiple table

我有两个模型 DriverDriverCar

我需要按模型显示字段值让我向您展示我的表单代码 header 请注意 Driver 通过 driver_id

DriverCar 相关
{!! 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

请任何指导。

您没有将 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);
}