Как сохранить запись в базе данных, используя многие отношения в laravel - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть три стола: restaurant_location, cuisine_restaurant_location и кухни.

В моей таблице кухонь есть список всех кухонь. У меня есть все детали ресторана в моей таблице restaurant_location. В ресторане может быть много кухонь, поэтому я создал стол kitchen_restaurant_location, в котором есть две колонки kitchen_id и restaurant_id. Я создал отношение "принадлежит многим" в моей модели restaurant_location.

модель ресторана_ местоположения

public function cuisines()
{
    return $this->belongsToMany(Cuisine::class, 'cuisine_restaurant_location', 'restaurant_id', 'cuisine_id');
}

У меня есть форма, в которой все детали ресторана и кухни должны быть добавлены. Прямо сейчас я добавляю все детали ресторана. Теперь вопрос в том, как я могу вставить кухни в "kitchen_restaurant_location".

Контроллер

$rest = new restaurant_location;
$rest->name = $request->input('name');
$rest->description = $request->input('desc');
$rest->save();
$cuisine = new cuisine_restaurant_location
$cuisine_lists = $request->input('cuisines');
foreach ($cuisine_lists as $cuisine_list) {
    $cuisine->name = $cuisine_list;
}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Попробуйте использовать метод sync ():

$h = [];
if (isset($input["cuisine_id"])) {
    $h = $input["cuisine_id"];
}
$restaurant_location->cuisines()->sync($h);
0 голосов
/ 04 апреля 2019

Вы можете использовать методы sync и attach, , описанные в разделе «Многие ко многим» красноречивой документации , для этого:

$rest->cuisines()->attach([$cuisineIds])

Где cuisineIdsсписок идентификаторов кухонь, которые вы хотите связатьРазница между sync и attach заключается в том, что sync удалит все идентификаторы, отсутствующие в массиве идентификаторов, которые вы передаете.

...