【发布时间】:2016-08-18 19:14:26
【问题描述】:
我试图限制我的 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()
但事实并非如此。有人知道我的问题是什么吗?任何指导将不胜感激。
【问题讨论】:
-
在第二段代码中,你知道你有
$content->slug,而不是$content->id吗?除了那个小错误,我希望第二个代码能够工作 -
是的,我认为第二行也不对,第三行,即: 'slug' => 'required|unique:contents,id,' 。 $content->id 。 ',id,user_id,' 。 Auth::id() 是我期望的工作,但事实并非如此。它允许我将 slug 更新为该用户已经存在的 slug。
-
最后一行代码丢失了
,id,也许这就是它不起作用的原因。试试:'required|unique:contents,id,' . $content->id . ',id,user_id,' . Auth::id() -
我的错,乔纳森,我确实在我的问题的第三行打错了字。不过,正确的版本在我之前的评论中。正确答案来自下面的乔迪。感谢您的帮助!
标签: php validation laravel artisan-migrate