我有桌子,我正在尝试存储电子邮件地址。这些电子邮件地址将与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相同的问题。一个人说我必须创建自己的验证规则。
答案 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;
并更改邮件内容
请尝试这些并回复发生的事情..或者它对你有用..?