Ну, в вашей ситуации вы не можете обновить строки site_features примерно так.Потому что вам нужно второй идентификатор в таблице site_features.Ниже запрос обновляет только первый столбец снова и снова.Таким образом, единственный способ сохранить эти функции create
новые строки с помощью метода create.
Если вы хотите обновить определенный столбец site_features, вы должны передать идентификаторы этих функций в контроллер
public function update(Request $request, Site $site)
{
// first you need to select a row before updating it
$site = $site->where("site_link",$request->site_link)->first();
$site->update([
"path" => $request->path,
]);
foreach($request->features as $feature){
SiteFeature::where("id",$feature->id)
->update([
"feature" => $feature->content
]);
}
return response()->json($site, 200);
}
Если у вас еще нет параметра id, если это новые функции, вы должны создать новые записи о них
public function update(Request $request, Site $site)
{
$site = $site->where("site_link",$request->site_link)->first();
$site->update([
"path" => $request->path,
]);
foreach($request->features as $feature){
SiteFeature::create([
"feature" => $feature
]);
}
return response()->json($site, 200);
}
И есть третий путь к этому.Если ваши возможности ограничены.Например, есть только 80 функций об этих сайтах.Некоторые веб-сайты имеют некоторые функции, а другие нет. Тогда вы можете захотеть использовать отношения many to many
.Создайте таблицу характеристик и добавьте все функции, а также сделайте многое для многих в отношениях между функциями и сайтами.После этого вам нужно только синхронизировать эти функции.Это очень просто в использовании.А также, когда вам нужно внести некоторые изменения в одну из функций.Вы не должны делать массовые изменения.Просто измените эту функцию в таблице функций, а затем примените ее ко всем веб-сайтам.
Надеюсь, вы меня понимаете, потому что мой английский такой ужасный:)