我必须编写验证规则,该规则应验证address
在routing_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
字段的行中都是唯一的。但它不起作用。
我的问题是:如何解决?
答案 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'
]);
}