Laravel 5.4:使用eloquent和fillable字段更新多个表的多个模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.4:使用eloquent和fillable字段更新多个表的多个模型相关的知识,希望对你有一定的参考价值。
我有两个型号Driver
和DriverCar
我需要通过模型显示字段值让我告诉你我的表单标题代码注意Driver
与DriverCar
有关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
任何指南请。
答案
您没有将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);
}
以上是关于Laravel 5.4:使用eloquent和fillable字段更新多个表的多个模型的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 Eloquent where parent
如何测试 Laravel 5.4 中的“创建”事件是不是调用了 Eloquent 模型方法?