1

我试图限制我的 Laravel 5.2 应用程序中的 required:unique 验证器仅针对特定 user_id 的表结果检查我的“slug”列的唯一性。换句话说,slug 确实需要是唯一的,但仅限于每个用户。我已经让它适用于 store() 函数,代码如下:

'slug' => 'required|unique:contents,slug,NULL,id,user_id,' . Auth::id()

这工作得很好。但是,我无法让 update() 函数正常工作,因为我无法让验证器停止针对当前正在更新的条目的结果检查唯一性。我目前使用的代码是:

'slug' => 'required|unique:contents,slug,' . $content->slug . ',id,user_id,' . Auth::id()

该代码对我来说看起来不正确,但是我尝试了几种变体,但它们都没有按照我的意愿工作。在我看来,我认为这会起作用:

'slug' => 'required|unique:contents,id,' . $content->id . ',user_id,' . Auth::id()

但事实并非如此。有人知道我的问题是什么吗?任何指导将不胜感激。

4

1 回答 1

7

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

unique:{0},{1},{2},{3},{4},{5}

在哪里:

{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()
于 2016-08-18T20:12:55.457 回答