Как обновить данные одной формы в разных таблицах в Laravel? - PullRequest
0 голосов
/ 15 октября 2018

Я работаю с Laravel 5.6 и MySQL.В моем приложении есть форма редактирования данных и ее обновленные значения, сохраняемые в 3 разных таблицах.называются транспортными средствами, автомобилями и загружают URL-адрес формы для редактирования следующим образом:

http://localhost:8000/myads/1/edit

номер (1) - это номер идентификатора таблицы транспортных средств, например,

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, функция обновления данных таблицы транспортных средств My VehicleController выглядит следующим образом

public function update(Request $request, $id)
    {
        $vehicle = Vehicle::find($id);

        $vehicle->name = $request->input('name');
        $vehicle->owner = $request->input('owner');

        $vehicle->save();
}

Теперь мне нужно обновить значения таблицы топлива автомобилей с такими жеФорма ввода необязательных значений.как я могу сделать это в контроллере?

Мой выбор топлива подобен этому,

<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 голосов
/ 15 октября 2018

получил успех с помощью следующих кодов,

$vehicle->cars()->where('vehicle_id', $id)->update(['fuel' => $request->input('fuel')]);
0 голосов
/ 15 октября 2018

Используйте скрытое поле ввода (загрузите идентификатор автомобиля для ввода, используя $ car-> id) в форме и назовите его как 'car_id'.В той же функции обновления

 $carId = $request->input('car_id');
 $car= Car::find($carId);
 //Update details here
 $car->save();

Примечание: при работе с несколькими таблицами не забудьте использовать транзакцию БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...