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


Laravel 5.2 Validator: limiting unique field check to specific user

我试图限制我的Laravel 5.2应用程序所需的唯一验证器,以检查我的'slug'列的唯一性,仅针对特定user_id的表结果。换句话说,鼻涕虫确实需要是唯一的,但只针对每个用户。我已经让它为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()

但它没有。有人知道我的问题是什么吗?如有任何指导,我将不胜感激。

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

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