如何使用laravel将数据保存到数据库中属于多个关系

时间:2019-04-04 13:20:50

标签: laravel eloquent eloquent--relationship

我有三个表:restaurant_locationcuisine_restaurant_location和美食。

我的美食表中列出了所有美食。我的restaurant_location表中有餐厅的所有详细信息。一家餐厅可以提供多种美食,因此我制作了一个表Cuisine_restaurant_location,其中有两列Cuisine_id和restaurant_id。我在restaurant_location模型中创建了一个属于很多关系。

restaurant_location模型

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

我有一张表格,其中应将餐厅的所有详细信息以及美食都添加进去。现在,我要添加餐厅的所有详细信息。现在的问题是如何在“ cuisine_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 :(得分:0)

您可以为此使用-sync方法described in the Many to many section of the eloquent documentation

attach

$rest->cuisines()->attach([$cuisineIds]) 是您要关联的美食ID的列表。 cuisineIdssync之间的区别在于attach会删除您传递的ID数组中不存在的所有ID。

答案 1 :(得分:0)

尝试sync()方法:

$h = [];
if (isset($input["cuisine_id"])) {
    $h = $input["cuisine_id"];
}
$restaurant_location->cuisines()->sync($h);