Laravel 5.2 验证器:将唯一字段检查限制为特定用户

Laravel 5.2 Validator: limiting unique field check to specific user

我试图限制我的 Laravel 5.2 应用程序中的 required:unique 验证器仅根据特定 [=] 的 table 结果检查我的 'slug' 列的唯一性24=]。换句话说,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()

我觉得该代码不合适,但我尝试了多种变体,none 其中的变体符合我的要求。在我看来,我认为这会起作用:

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

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

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

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

其中:

{0} = table 正在验证名称

{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()