Laravel 5.1 - 更新当前条目的名称,必须对当前用户ID是唯一的

时间:2016-01-27 08:08:19

标签: php validation laravel authentication laravel-5.1

我的.....Animals | Age .... dog 2 cat 4 dog 6 ....etc. 文件中已经有以下代码。它在大多数情况下都有效,但是如果我尝试更新一个条目并保留名称,因为它目前无法说明该名称必须是唯一的......因为除了<之外没有其他条目具有此名称在编辑表单中加载了em>当前条目。

对我来说,检查名称对于当前用户是唯一的,还允许我更新相同的条目而不更改名称,最好的做法是什么?

GeckoRequest

1 个答案:

答案 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

希望这有帮助!