Php 如何在Laravel中检查现有电子邮件?

Php 如何在Laravel中检查现有电子邮件?,php,validation,laravel,laravel-5,Php,Validation,Laravel,Laravel 5,我正在尝试检查电子邮件是否已存在于我的订阅表中的我的数据库中 形式 调试步骤 我试着输入我知道已经存在于数据库中的电子邮件。 我希望我的验证失败,并将我重定向回我的/#页脚(主页) 我试着打印dd(“这里”)如果我的验证没有失败 但我一直在这里打印,这意味着我的验证没有失败。 为什么会这样?我现在完全不知所措。 有人能指出我遗漏了什么吗? 我知道我很接近 谢谢。您的数据库字段名是电子邮件而不是订阅电子邮件,但是您的输入参数名是。Laravel默认为输入时提供的字段名,因此在您的情况下subs

我正在尝试检查电子邮件是否已存在于我的订阅表中的我的数据库中


形式
调试步骤 我试着输入我知道已经存在于数据库中的电子邮件。 我希望我的验证失败,并将我重定向回我的
/#页脚
(主页)

我试着打印
dd(“这里”)如果我的验证没有失败

但我一直在这里打印
,这意味着我的验证没有失败。
为什么会这样?我现在完全不知所措。
有人能指出我遗漏了什么吗?
我知道我很接近


谢谢。

您的数据库字段名是
电子邮件
而不是
订阅电子邮件
,但是您的输入参数名是。Laravel默认为输入时提供的字段名,因此在您的情况下
subscribe\u email

试试这个:

array(
    'subscribe_email'  => 'required|email|unique:subscribes,email',
)

这使用了db字段名
电子邮件
,就像您使用的那样,但是验证在字段
订阅电子邮件
上,您的db字段名是
电子邮件
而不是
订阅电子邮件
,但是您的输入参数名是。Laravel默认为输入时提供的字段名,因此在您的情况下
subscribe\u email

试试这个:

array(
    'subscribe_email'  => 'required|email|unique:subscribes,email',
)

这使用了db字段名
email
,就像您所做的那样,但是验证是在字段
subscribe\u email

上进行的。看起来这不起作用的原因是因为您试图将
subscribe\u email
字段与
email
字段的验证进行匹配,没有进行匹配。要修复此问题,您需要执行以下操作:

$validator = Validator::make( Input::only('subscribe_email'),
    array(
        'subscribe_email'  =>'email|unique:subscribes,email',
    )
);

这似乎不起作用的原因是,您试图将
订阅\u电子邮件
字段与
电子邮件
字段的验证进行匹配,但未进行匹配。要修复此问题,您需要执行以下操作:

$validator = Validator::make( Input::only('subscribe_email'),
    array(
        'subscribe_email'  =>'email|unique:subscribes,email',
    )
);

尝试在subscribes表中指定电子邮件的列名

$rules = array(
'email' => 'email|unique:subscribes,email'
);

尝试在subscribes表中指定电子邮件的列名

$rules = array(
'email' => 'email|unique:subscribes,email'
);

尝试指定
subscribes
$rules=array('email'=>'unique:subscribes,email')的列名
email
尝试指定
订阅
$rules=array('email'=>'unique:subscribes,email')的列名
email
第一次尝试的工作。非常感谢你。有一件事,它们不需要是
必需的
,所以我把它们取下来。如果不是必需的,你应该在插入之前添加一个额外的检查。验证不会因为一个空的
subscribe\u email
值而失败,所以你的数据库中会有空的email值。除此之外,如果您的电子邮件数据库字段上有一个唯一的索引,第二个提交空值的人将触发一个数据库错误(2个空值!=unique),是否有方法检查或清空
length>0
maybe?如果您离开电子邮件验证规则,您可以只检查
Input::get('subscribe_email')
是否有值,空字符串将进行验证,但如果发布了某个内容,它将检查它是否是有效的电子邮件语法。如果(\Input::get('subscribe_email'){//insert}
,您基本上只需执行一个
。第一次尝试就可以了。非常感谢你。有一件事,它们不需要是
必需的
,所以我把它们取下来。如果不是必需的,你应该在插入之前添加一个额外的检查。验证不会因为一个空的
subscribe\u email
值而失败,所以你的数据库中会有空的email值。除此之外,如果您的电子邮件数据库字段上有一个唯一的索引,第二个提交空值的人将触发一个数据库错误(2个空值!=unique),是否有方法检查或清空
length>0
maybe?如果您离开电子邮件验证规则,您可以只检查
Input::get('subscribe_email')
是否有值,空字符串将进行验证,但如果发布了某个内容,它将检查它是否是有效的电子邮件语法。如果(\Input::get('subscribe_email'){//insert}
,你基本上可以做一个
。你忘了这个
email |
@rangerover.js,你的问题中没有任何你需要/想要的东西,所以我只包括了回答你问题所必需的东西。我将更新我的答案以包含它:)您忘记了这封
电子邮件|
@rangerrover.js,您的问题中没有任何内容指定您需要/想要,因此我只包含了回答您问题所需的内容。我将更新我的答案以包括它:)这个问题已经得到了回答。如果你的答案提供了一个更好的或替代的解决问题的方法,请解释它,不要只是张贴代码。另外,虽然我不熟悉这个主题,但这个答案似乎并没有真正回答这个问题。这个问题已经被回答了。如果你的答案提供了一个更好的或替代的解决问题的方法,请解释它,不要只是张贴代码。此外,虽然我不熟悉这个主题,但这个答案似乎并没有真正回答这个问题。