我正在使用Laravel 5.6和MySQL。在我的应用程序中,我有一些数据编辑表单,其更新值保存了3个不同的表。称为车辆,汽车,并按如下方式上传“我的编辑表单”网址,
http://localhost:8000/myads/1/edit
数字(1)是车辆表的ID号,
id name owner
1 toyota dane
2 BMW peter
3 Benz samantha
4 volvo Alex
汽车桌子就是这样,
id fuel vehicle_id
1 P 1
2 D 3
3 E 2
我需要使用关于vehicle_id来更新汽车表数据,我的VehicleController车辆表数据更新功能就是这样
public function update(Request $request, $id)
{
$vehicle = Vehicle::find($id);
$vehicle->name = $request->input('name');
$vehicle->owner = $request->input('owner');
$vehicle->save();
}
现在我需要使用相同的表格可选值输入来更新汽车表的燃油值。我该如何在Controller中做到这一点?
我的燃料选择输入是这样的,
<div class="form-group">
<label for="exampleFormControlSelect1">Fuel</label>
<select class="form-control" id="fuel" name="fuel">
@foreach($vehicles->cars as $car)
<option value="{!! $car->fuel !!}">{!! $car->fuel !!}</option>
@endforeach
<option value="P">Petrol</option>
<option value="D">Diesel</option>
<option value="H">Hybrid</option>
<option value="E">Electric</option>
</select>
</div>
车辆和汽车模型之间的关系
车辆模型
public function cars()
{
return $this->hasMany(Car::class);
}
汽车型号
public function vehicle()
{
return $this->belongsTo(Vehicle::class);
}
怎么办?
答案 0 :(得分:0)
使用一个隐藏的Input字段(使用$ car-> id将car id加载到输入中)并将其命名为'car_id'。 在相同的更新功能中,
$carId = $request->input('car_id');
$car= Car::find($carId);
//Update details here
$car->save();
注意:使用多个表时,请不要忘记使用数据库事务。
答案 1 :(得分:0)
使用以下代码获得成功
$vehicle->cars()->where('vehicle_id', $id)->update(['fuel' => $request->input('fuel')]);