Laravel验证 - 如何检查给定数组中是否存在值?

Met*_*ani 6 php arrays validation laravel laravel-5.2

所以,好吧我从验证文档中尝试了很多规则,但都给了我同样的错误说法

数组到字符串转换

这是我添加数组的方式:

$this->validate($request,[
                'employee' => 'required|in:'.$employee->pluck('id')->toArray(),
            ],[
                'employee.in' => 'employee does not exists',
            ]);
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何提示?

我创建了一个自定义验证器,但仍然传递数组似乎是不可能的

Ohg*_*why 16

将数组作为字符串内爆并将其连接到逗号上.

'employee' => 'required|in:'.$employee->implode('id', ', '),
Run Code Online (Sandbox Code Playgroud)

这将生成验证器在进行in比较时期望的正确逗号分隔字符串.


nie*_*ano 6

更新:现在,您可以使用Rule类,而不是按照正确答案中的说明自行内插值。只需做:

['someProperty' => ['required', Rule::in(['needed', 'stuff'])]];
Run Code Online (Sandbox Code Playgroud)

如文档的“验证数组”部分所述:https : //laravel.com/docs/5.6/validation#validating-arrays