Laravel Проверка количества массивов полей не работает - PullRequest
0 голосов
/ 31 мая 2019

Я создал проверку правил следующим образом:

$rules = [
  'items.*.qty' => ['required', 'integer', 'min:1'],
  'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);

здесь мне нужно проверить, что каждый ordered_qty должен быть больше qty Я пробовал приведенный ниже способ, но он не работает дляme

$rules = [
  'items.*.qty' => ['required', 'integer', 'min:1','max:items.*.ordered_qty'],
  'items.*.ordered_qty' => ['required','numeric','min:1']
]
$this->validate($request, $rules);

Я также пытался выполнить пользовательскую проверку, но не смог получить значение другого поля

$rules = [
  'items.*.qty' => ['required', 'integer', 'min:1',function ($attribute, $value, $fail) {
            if ($value > ordered_qty) {
                $fail(':attribute qty is invalid!');
            }
        }],
  'items.*.ordered_qty' => ['required','numeric','min:1']
]

Проверка неверна.Как я могу сделать сравнение массивов объектов среди их атрибутов

1 Ответ

1 голос
/ 31 мая 2019

Вы используете max для qty, но max подозревает значение, когда вы пытаетесь проверить его с помощью ввода другого поля.Я думаю, что вам нужно использовать lte, см .: https://laravel.com/docs/5.8/validation#rule-lte

...