验证数据库中是否存在每个逗号分隔值?

时间:2017-09-29 15:45:38

标签: laravel laravel-5

使用Laravel 5.4,我的用户可以使用自动完成帮助程序将值放入输入中。我想在插入时验证数据库中是否存在每个值。

“unit”的输入值:“12,13,14”

如何在插入之前检查单元“12”和单元“13”以及单元“14”是否存在?

$units = array_filter(array_unique(explode(",", $request->unit))); 
 // input "12,13,14" becomes [12,13,14]

$this->validate($request,[
        'unit'  => 'required|exists:units.id,'.$units,
]);

我是否必须使用自定义验证规则,或者laravel是否有像'required | existsAllValuesInThisArray'这样的东西?没有在关于它的文档中找到任何内容。

我也发现了这一点,但是它就像多个选择字段或复选框一样从它的外观中排序。

$validator = Validator::make($request->all(), [
    'person.*.email' => 'email|unique:users',
    'person.*.first_name' => 'required_with:person.*.last_name',
]);

更新:我最终使用javascript将输入拆分为数组,然后再将其发送出去进行处理。所以我的输入名称变为“units []”而不是“units”

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

$this->validate($request,[ 'unit.*' => 'required|exists:units.id,'.$units, ]);

由于$units是一个数组,因此规则unit.*应该检查数组的每个元素。