Laravel 中的唯一验证取决于用户 ID
Unique validation in Laravel depending by User ID
在我的图书应用中,我对商店请求有以下规则:
'title' => 'unique:books,title|required|min:3|max:128,' . $this->user()->id.',user_id',
此刻,根据 StoreRequest 中的验证规则,我遇到了错误 "This title has already been added"(没错,但标题是由其他用户添加的,而不是由尝试添加它的用户添加的)。
我想要实现的是对标题有一个唯一的规则,但只针对这个用户collection。例如:2个不同的用户可以声明同一个书名,但同一个用户不能重复。
怎么了?
试试这个。
'title' => 'required|min:3|max:128|unique:books,title,user_id,'.Auth::user()->id,
试试这个:
'title' => 'required|string|unique:tblbooks,id,'.$request->input('title'),
'title' => 'unique:books,user_id|required|min:3|max:128,' . $this->user()->id,
似乎可以解决问题!谢谢
试试这个
'title' => 'required|min:3|max:128|unique:books,title,NULL,id,user_id,'.Auth::user()->id,
old Laravel 5 validation documentation有例子:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
Laravel 8 仍然有效。该示例检查一个唯一的 email_address
,其中 account_id == 1
;
current validation documentation (Laravel 8) 以这种方式显示示例:
'email' => Rule::unique('users')->where(function ($query) {
return $query->where('account_id', 1);
})
在文档页面中搜索“添加其他 Where 子句”。
在我的图书应用中,我对商店请求有以下规则:
'title' => 'unique:books,title|required|min:3|max:128,' . $this->user()->id.',user_id',
此刻,根据 StoreRequest 中的验证规则,我遇到了错误 "This title has already been added"(没错,但标题是由其他用户添加的,而不是由尝试添加它的用户添加的)。
我想要实现的是对标题有一个唯一的规则,但只针对这个用户collection。例如:2个不同的用户可以声明同一个书名,但同一个用户不能重复。
怎么了?
试试这个。
'title' => 'required|min:3|max:128|unique:books,title,user_id,'.Auth::user()->id,
试试这个:
'title' => 'required|string|unique:tblbooks,id,'.$request->input('title'),
'title' => 'unique:books,user_id|required|min:3|max:128,' . $this->user()->id,
似乎可以解决问题!谢谢
试试这个
'title' => 'required|min:3|max:128|unique:books,title,NULL,id,user_id,'.Auth::user()->id,
old Laravel 5 validation documentation有例子:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
Laravel 8 仍然有效。该示例检查一个唯一的 email_address
,其中 account_id == 1
;
current validation documentation (Laravel 8) 以这种方式显示示例:
'email' => Rule::unique('users')->where(function ($query) {
return $query->where('account_id', 1);
})
在文档页面中搜索“添加其他 Where 子句”。