Проверьте, являются ли элементы в массиве элементами в другом массиве в Laravel Validator - PullRequest
0 голосов
/ 01 марта 2020

Я хотел бы проверить массив, убедившись, что все элементы на входе являются частью другого массива. Например, допустим, у меня есть три массива:

$foo = ['John', 'Terry', 'Kim'];
$bar = ['John', 'Kim'];
$sub = ['John', 'Ringo'];

и у меня есть функция с именем CompareArrays(). Выполнение CompareArrays($foo, $bar) приведет к true, потому что все элементы в $bar существуют в $foo. Однако CompareArrays($foo, $sub) приведет к false, поскольку Ringo не существует в foo. Реализация этого в vanilla php - это

!array_diff($foo, $bar)

Как мне сделать это в Laravel Validator без создания пользовательского правила (v6.10)?

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете использовать in_array:anotherfield.* правило

use Illuminate\Validation\Rule;
//...

$request->validate([
    'arr1' => 'required|array',
    'arr2' => 'nullable|array',
    'arr2.*' => [Rule::requiredIf($request->filled('arr1')), 'in_array:arr1.*']
    /...
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...