【发布时间】:2016-05-04 01:52:11
【问题描述】:
我的GeckoRequest 文件中有以下代码。它在大多数情况下都有效,但是如果我尝试更新一个条目并保持当前名称,它会失败说该名称需要是唯一的......这是因为除了 当前在编辑表单中加载的条目。
对我来说最好的方法是检查名称对于当前用户来说是唯一的,同时还允许我在不更改名称的情况下更新相同的条目?
public function rules()
{
switch($this->method())
{
case 'GET':
case 'DELETE':
{
return [];
}
case 'POST':
{
return [
'morph' => 'required',
'sex' => 'required',
'genetics' => 'required',
'name' => "required|unique:geckos,name,NULL,id,user_id," . \Auth::user()->id
];
}
case 'PUT':
case 'PATCH':
{
return [
'morph' => 'required',
'sex' => 'required',
'genetics' => 'required',
'name' => "required|unique:geckos,name,NULL,id,user_id," . \Auth::user()->id
];
}
default:break;
}
}
【问题讨论】:
-
具有唯一验证的 Null 和 id 的目的是什么?我通过像这样使用它来执行此操作 ` 'username'=> 'required|unique:users,username,'.$user->id `
-
自从我从事这个项目以来已经很长时间了,我不记得它的用途,但是如果我将其删除,它似乎会破坏验证。我们不是检查用户名是否唯一,而是检查壁虎名称在当前用户保存的壁虎中是否唯一。目前,即使我保存 same 壁虎而不更改名称,它也会引发错误,说明名称不是唯一的
-
根据我的研发,它给出错误“名称不是唯一的”的唯一方法可能是因为登录的用户 ID 没有到来,所以尝试转储登录用户 ID 和检查身份证是否到来。
标签: php validation laravel authentication laravel-5.1