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

时间:2016-09-20 10:21:52

标签: php laravel laravel-5 laravel-validation

我有桌子,我正在尝试存储电子邮件地址。这些电子邮件地址将与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中添加了与issue相同的问题。一个人说我必须创建自己的验证规则。

2 个答案:

答案 0 :(得分:2)

强制使用唯一规则忽略给定ID

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

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

所以在你的情况下,它如下

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

答案 1 :(得分:0)

违反现行规则   首先,根据字段是否有用的条件存在规则检查   我想,如果我们将它用作对立面,那么它对你有用。

前: -

     '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)

使用输入和输入导入

    use Illuminate\Support\Facades\Input;        

并更改邮件内容
  请尝试这些并回复发生的事情..或者它对你有用..?