如何使用 laravel 中的多个关系在数据库中保存记录
How to save record in database using belongs to many relation in laravel
我有三个 table:restaurant_location
、cuisine_restaurant_location
和美食。
我的菜系里有所有菜系的列表table。我的 restaurant_location table 中有餐厅的所有详细信息。一家餐厅可以有很多菜系,所以我做了一个 table 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;
}
您可以使用 sync
和 attach
方法,described in the Many to many section of the eloquent documentation,为此:
$rest->cuisines()->attach([$cuisineIds])
其中 cuisineIds
是您要关联的美食的 ID 列表。
sync
和 attach
之间的区别在于 sync
将删除您传递的 ID 数组中不存在的所有 ID。
尝试 sync() 方法:
$h = [];
if (isset($input["cuisine_id"])) {
$h = $input["cuisine_id"];
}
$restaurant_location->cuisines()->sync($h);
我有三个 table:restaurant_location
、cuisine_restaurant_location
和美食。
我的菜系里有所有菜系的列表table。我的 restaurant_location table 中有餐厅的所有详细信息。一家餐厅可以有很多菜系,所以我做了一个 table 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;
}
您可以使用 sync
和 attach
方法,described in the Many to many section of the eloquent documentation,为此:
$rest->cuisines()->attach([$cuisineIds])
其中 cuisineIds
是您要关联的美食的 ID 列表。
sync
和 attach
之间的区别在于 sync
将删除您传递的 ID 数组中不存在的所有 ID。
尝试 sync() 方法:
$h = [];
if (isset($input["cuisine_id"])) {
$h = $input["cuisine_id"];
}
$restaurant_location->cuisines()->sync($h);