我的.....Animals | Age ....
dog 2
cat 4
dog 6
....etc.
文件中已经有以下代码。它在大多数情况下都有效,但是如果我尝试更新一个条目并保留名称,因为它目前无法说明该名称必须是唯一的......因为除了<之外没有其他条目具有此名称在编辑表单中加载了em>当前条目。
对我来说,检查名称对于当前用户是唯一的,还允许我更新相同的条目而不更改名称,最好的做法是什么?
GeckoRequest
答案 0 :(得分:1)
您应该能够在规则中指定Gecko资源的ID。
case 'PATCH':
{
//This is assuming that you're using route model binding
//and that it's called gecko and not geckos (or something else).
$id = $this->route('gecko')->id;
return [
'morph' => 'required',
'sex' => 'required',
'genetics' => 'required',
'name' => "required|unique:geckos,name,{$id},id,user_id," . \Auth::user()->id
];
}
这将告诉laravel它必须是唯一的,除非id匹配。
NB 在表单验证类中使用路由方法时,它将查找已在url中传递的其他参数(这些是由{包裹的url的部分)您的路线文件中的{1}}。根据这些设置的方式和/或您使用的{}
的版本,Laravel可能已经解析了模型的参数。
如果您不确定laravel如何在路线中存储参数,请在Laravel
方法中添加rules()
,提交表单然后查看回复。该值将位于dd($this->route());
数组中。
如果它没有存储为模型,那么它只是id:parameters
。
希望这有帮助!