Класс запроса: правила зависят от количества элементов - PullRequest
1 голос
/ 29 января 2020

Я использую класс запроса для проверки форм, но у меня проблема. Посмотрите на этот код

public function rules()
{
    return [
        'title' => 'required|string|between:6,50',
        'category_id' => 'required|integer|between:1,10'
    ];
}

Он работает правильно, но количество категорий будет меняться. Я могу решить свою проблему, если я использую метод validate внутри метода моего контроллера:

$count = Category::count();
$request->validate([
    'title' => 'required|string|between:6,50',
    'category_id' => 'required|integer|between:1,' . $count
]);

Как я могу решить мою проблему с помощью класса запроса?

Ответы [ 2 ]

3 голосов
/ 29 января 2020

Ваша проверка на данный момент не имеет особого смысла, вы проверяете по некоторому произвольному числу, которое может или не может существовать в вашей базе данных.

Я собираюсь предположить, что вы хотите принимать только идентификаторы категории которые существуют в базе данных, поэтому я бы использовал правило exists:

$request->validate([
    'title' => 'required|string|between:6,50',
    'category_id' => 'required|integer|exists:categories,id'
]);


Из документов :

exists:table,column

Проверяемое поле должно существовать в данной таблице базы данных.


Basi c Правило использования существующих

'state' => 'exists:states'

Если параметр столбца не указано, будет использоваться имя поля.


Указание имени пользовательского столбца

'state' => 'exists:states,abbreviation'
0 голосов
/ 29 января 2020

просто положить существует exists:categories

просто изменить 'category_id' => 'required|integer|between:1,10'

'category_id' => 'required|integer|exists:categories,id'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...