每个客户端数据库中的唯一邮件

时间:2017-06-22 09:36:24

标签: php laravel laravel-5 laravel-5.4 php-7.1

我正在使用laravel 5.4 with couchbase with php 7.1

在我们的系统中,可以创建新用户。直到现在,电子邮件字段必须是数据库用户表所独有的,没问题,我们在请求中使用了这个

'email'        => 'required|email|unique:users,email,NULL,user_id,datetime_deleted,NULL',

这很好用。 现在,我们向我们的应用程序发出了一个新请求,即用户的电子邮件必须是唯一的,不是整个用户表,而是一个客户端,所以我们可以有几次相同的电子邮件地址,但是'文档中的client_id'字段。

我如何把它放在我的请求类中?

1 个答案:

答案 0 :(得分:1)

对于laravel 5.3及以上 您可以添加其他where子句以进行唯一验证,如下所示

'email' => Rule::unique('users')->where(function ($query) {
    $query->where('user_id', Auth::user()->id);
})
别忘了提及 使用Illuminate \ Validation \ Rule;

或尝试 对于laravel 5.2

插入

'email' => 'unique:users,email,NULL,id,user_id,'.Auth::user()->id,

更新时

'email' => 'unique:users,email,{id of object to edit},id,user_id,'.Auth::user()->id,

在上面的规则中,只有具有Auth :: id()的user_id的行才会包含在唯一检查中。