如何防止插入电子邮件,如果已经存在的特定id在laravel


How to prevent insert email if already exist with specific id in laravel?

我有一个表,我试图存储电子邮件地址。这些电子邮件地址将以user_id保存。

例如在email_list

|ID | user_id | email          |
...............................
| 1 | 101     | john@gmail.com |
...............................
| 2 | 102     | john@gmail.com |

在上面的表中,你可以看到相同的电子邮件地址保存不同的user_id,这就是我想做的。

目前我正在尝试像这样简单的laravel验证。

'email' => 'required|unique:email_list|email',

那么是否有任何方法来检查已经存在的电子邮件地址,如果行有相同的user_id ?我用的是laravel 5.2。如果有人指导我,我会很感激。谢谢你

3小时后编辑

我还在github中添加了相同的问题。有人说我必须创建自己的验证规则。

强制唯一规则忽略给定ID

第三个可选参数可以指定要忽略的ID。此外,如果表使用主键列名而不是id,则可以将其指定为可选的第四个参数

'email' => "unique:{$table},{$field},{$user->id},{$idField}"

那么在你的例子中,它会像这样

'email' => "unique:email_list,email,{$user->id},user_id'

这是违反现行规则的。
首先,根据字段是否可用的条件检查是否存在规则。
我认为,如果我们把它当作相反的,那么它对你是有用的。

交货:

     'email' => 'exists:email_list,email,user_id,!102'

     'email' => 'exists:email_list,email,user_id,!'. $user_id        

,

     'email' => 'exists:email_list,email,user_id,!'. Input::get(user_id)

使用Input &导入

    use Illuminate'Support'Facades'Input;        

并更改消息内容
请尝试这些并回复发生了什么…或者这对你来说是工作吗?