Laravel验证 - 独特的可以为空的地方

时间:2017-07-12 09:20:51

标签: laravel laravel-5 eloquent laravel-validation laravel-request

我必须编写验证规则,该规则应验证addressrouting_id给定值的行上是否唯一{0}。这很简单。但在某些情况下,routing_id字段可能为NULL,然后我的验证请求规则无效。

这是我的规则:

$rules['address']   = 'required|ip|unique:vias,address'.\Route::current()->getParameter('via')->id.',id,routing_id,'.request()->input('routing_id'));

当我在我的null数组中使用routing_id作为POST修补行时,我希望我的address在所有具有空routing_id字段的行中都是唯一的。但它不起作用。

我的问题是:如何解决?

2 个答案:

答案 0 :(得分:0)

经过几个小时的研究,我终于找到了问题所在。

通过使用Laravel中实现的Store Request Validation,我可以修改POSTed参数。在我上面发布的验证规则中,我有

request()->input('routing_id')

正在检索请求参数的 FRESH 副本,而不是我修改的这些副本。这就是为什么我的NULL值未被使用的原因 - 因为我有条件地将一些特殊值与NULL值合并。

Params已正确更改,但仅限于StoreRequestValidation类。

答案 1 :(得分:-1)

您可以先检查地址!=空然后 确认 像这些代码

$this->validate($request,
            [
                'name' => 'required|max:50',
                'lastname' => 'required|max:50',
                'city_id' => 'required',
                'avatar' => 'mimes:jpeg,bmp,png,jpg'
            ]);

        if(isset($request->address))
        {
            $this->validate($request,
                [
                    'address' => 'required|max:150|email|unique:users'
                ]);
        }