Laravel 5.2 Validator:限制特定用户的唯一字段检查

Luc*_*one 1 php validation laravel artisan-migrate

我试图在我的Laravel 5.2应用程序中限制所需的:唯一验证器来检查我的'slug'列的唯一性,而不仅仅是特定user_id的表结果.换句话说,slug确实需要是唯一的,但仅限于每个用户.我已经使用store()函数,使用以下代码:

'slug' => 'required|unique:contents,slug,NULL,id,user_id,' . Auth::id()
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,我无法使update()函数工作相同,因为我无法使验证程序停止针对当前正在更新的条目的结果进行唯一性检查.我目前使用的代码是:

'slug' => 'required|unique:contents,slug,' . $content->slug . ',id,user_id,' . Auth::id()
Run Code Online (Sandbox Code Playgroud)

那段代码对我来说不合适,但我已经尝试了几种变体,但它们都没有按照我的意愿运行.在我看来,我认为这会奏效:

'slug' => 'required|unique:contents,id,' . $content->id . ',user_id,' . Auth::id()
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.有人知道我的问题在这里吗?任何指导都将非常感谢.

Jod*_*her 6

如果不知道模型中的实际属性名称,很难给出正确的答案.验证器支持以下参数

unique:{0},{1},{2},{3},{4},{5}
Run Code Online (Sandbox Code Playgroud)

哪里:

{0} =表名被验证

{1} =正在验证列名称

{2}= {0}要跳过验证的行的Id值

{3} =中的主键列的名称 {0}

{4} =中的其他过滤列的名称 {0}

{5} =其他过滤器列的值

因此,它似乎很明显,我们的值{0},{1},{2}{5}.我不知道从你的问题的信息什么正确的价值观{3}{4}是.如果我要猜测,我会像这样编写验证器规则:

'slug' => 'required|unique:contents,slug,' . $content->id . ',id,user_id,' . Auth::id()
Run Code Online (Sandbox Code Playgroud)