Как использовать правило gte в laravel в случае опциональных полей?

Здравствуйте.

У меня в form request есть примерно такое
public function rules()
{
    return [
        'min_price' => 'nullable|numeric|min:0',
        'max_price' => 'nullable|numeric|min:0|gte:max_price',
    ];
}

Оба поля опциональные.
Но если я указываю только max_price, то получаю ошибку, что значение должно быть больше или равно min_price.

Мне не нужно делать ни одно из полей обязательным.
Идея заключается в следующем.
  • Пользователь может указать только min_price, а max_price не указывать.
  • Пользователь может указать только max_price, а min_price не указывать.
  • Пользователь может заполнить оба поля.
  • Пользователь может оставить оба поля пустыми.

И вот только в случае, когда заполнены оба поля, я хочу дополнительно проверять, что значение max_price больше или равно min_price.
Просто если min_price не указано, то эта проверка теряет всякий смысл.

Неужели никак нельзя это обойти и придётся писать кастомное правило?
Это же достаточно распостранённый кейс. Неужели laravel никак не умеет учитывать опциональность полей в подобных случаях?

Спасибо.
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@jazzus
Убрать gte правило из списка правил если $this->filled('min_price')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы