#php #laravel #laravel-8
Вопрос:
У меня есть этот стол :
В коде, который я ввел :
$id = request()->route()->parameter('keyword')?->id;
return [
'key' => ['required', 'unique:keywords,key,project_page_id,'.$id],
];
Если я попытаюсь добавить новый элемент с ключом addButton
и project_page_id = 5
, я получу ошибку 422 с сообщением : The key has already been taken.
. Я хочу иметь уникальный key
идентификатор по project_page_id, как я могу до этого добраться ?
Ответ №1:
Laravel
имеет объекты проверки, где вы получаете более мощные возможности. У него есть уникальный объект проверки, и вы можете настроить запрос, где, как мне кажется, вам нужна следующая логика, чтобы также проверить наличие project_page_id
.
'key' => ['required', (new Unique('keywords', 'id'))->where('project_page_id', $id)],
Комментарии:
1. Я поставил так :
['required', (new Unique('keywords', 'id'))->where('project_page_id', $id)]
. Не работает, теперь я могу дублировать ключи для одного или другого project_page_id2. Какова стоимость dd($id); ?
3. имеет значение null для добавления и идентификатора в случае редактирования
4. Но я считаю, что если вы можете создать дубликат идентификатора страницы проекта, этот идентификатор в этих случаях будет равен нулю