У меня есть опция множественного выбора на моем веб-сайте.
<select multiple name="genres[]">
<option value="1">action</option>
<option value="2">adult</option>
<option value="3">advanture</option>
<option value="4">anime</option>
<option value="5">biographic</option>
</select>
Также у меня есть поля в db-шоу
id name
1 grey's anatomy
2 the morning show
жанры
id name
1 action
2 adult
3 advanture
3 anime
5 biographic
data_show_genres
id show_id genre_id
1 1 4
2 1 2
3 2 1
После кнопки «Отправить» функция do
foreach ($input['genres'] as $genre) {
DataShowGenres::updateOrCreate(
['show_id' => $id, 'genre_id' => $genre]
);
}
Таким образом, добавляются работы, но когда я пытаюсь удалить, я имею в виду отмена выбора некоторых данных. Старый все еще остается. Я всегда могу удалить старые данные для этого шоу, но есть ли способ сделать это лучше?
Редактировать: Контроллер:
public function edit_update(Request $request, $id)
{
$request->validate([
'title' => 'required|min:1|max:300',
'imdb' => 'required|min:0|max:10000000|numeric',
'tvdb' => 'required|min:0|max:10000000|numeric',
'youtube' => 'nullable|url',
'hidden' => 'nullable',
]);
$input = $request->all();
$input['hidden'] = $request->has('hidden') ? 1 : 0;
$input['recommend'] = $request->has('recommend') ? 1 : 0;
if (empty($input["genres"])) {
} else {
foreach ($input['genres'] as $genre) {
$zanr = DataShowGenres::updateOrCreate(
['show_id' => $id, 'genre_id' => $genre]
);
}
}
$serija = Serija::FindOrFail($id_serije);
$serija->title = $input['title'];
$serija->imdb = $input['imdb'];
$serija->tvdb = $input['tvdb'];
$serija->imdb_rating = $input['imdb_rating'];
$serija->tmdb = $input['tmdb'];
$serija->hidden = $input['hidden'];
$serija->youtube = $input['youtube'];
$serija->save();
toast('Edited!', 'success');
return back();
}
Маршрут:
Route::get('/serije/izmeni/{id}/{slug}', 'SerijeController@edit')->where(['id' => '[0-9]+', 'title' => '^[a-z0-9]+(?:-[a-z0-9]+)*$'])->middleware('permission:show_edit');
Route::post('/serije/izmeni/{id}/{slug}', 'SerijeController@edit_update')->where(['id' => '[0-9]+', 'naziv' => '^[a-z0-9]+(?:-[a-z0-9]+)*$'])->middleware('permission:show_edit');