在我的图书应用程序中,我对商店请求有以下规则:
'title' => 'unique:books,title|required|min:3|max:128,' . $this->user()->id.',user_id',
此时,使用 StoreRequest 中的验证规则,我收到错误"此标题已添加"(这是正确的,但标题是由其他用户添加的,而不是由尝试添加它的用户添加的(。
我想要实现的是标题的唯一规则,但仅适用于此用户集合。例如:2 个不同的用户可以声明相同的书名,但同一个用户不能复制它。
怎么了?
旧的Laravel 5验证文档有这样的例子:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
它仍然适用于Laravel 8。该示例检查一个唯一的email_address
其中account_id == 1
;
当前的验证文档(Laravel 8(以这种方式显示了示例:
'email' => Rule::unique('users')->where(function ($query) {
return $query->where('account_id', 1);
})
<小时 />在 docu 页面中搜索"添加附加 where 子句"。
试试这个:
'title' => 'required|string|unique:tblbooks,id,'.$request->input('title'),
试试这个。
'title' => 'required|min:3|max:128|unique:books,title,user_id,'.Auth::user()->id,
'title' => 'unique:books,user_id|required|min:3|max:128,' . $this->user()->id,
似乎可以解决问题!谢谢<</p>
试试这个
'title' => 'required|min:3|max:128|unique:books,title,NULL,id,user_id,'.Auth::user()->id,