如何在Laravel中将一个表单数据更新到不同的表?

时间:2018-10-15 05:00:46

标签: php mysql laravel-5

我正在使用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);
    }

怎么办?

2 个答案:

答案 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')]);