如何在laravel 3的验证中查询另外两个输入?

时间:2013-05-07 11:47:30

标签: php validation laravel

例如,用户将userNameemail传递给我,我想要进行自定义验证,以检查数据库的user表是否包含两个{ {1}}等于和userName相等且状态等于email?自定义验证如何实现?

例如:

用户输入:

  

userName:Peter

     

电子邮件:peter@email.com

在案例1中,在DB的用户表中:

1

2 个答案:

答案 0 :(得分:4)

您可以创建自定义验证方法作为全部捕获。这里的主要问题是验证扩展只会将单个属性传递给方法而不是所有三个的值。这将要求您进行验证。由于表格,列名称和输入的硬编码特性,此方法将非常适合您的特定应用程序。它也没有给你任何方式来告诉问题所在的哪个领域,并且需要一些额外的规则。另一个建议是将验证器类实际扩展为库,为您提供更精细的调优验证引擎。

Validator::register('usercheck', function($attribute, $value, $parameters)
{
    $count = DB::table('user')
      ->where('userName', '=', Input::get('userName'))
      ->where('email', '=', Input::get('email'))
      ->where('status', '=', Input::get('status'))
      ->count();

    return $count > 0;
});

使用它只是添加它作为规则...请记住这感觉有点hacky并且有更好的方法这样做,最值得注意的是我在开头段落中建议的方法。

$rules = array(
    'userName' => 'usercheck'
);

答案 1 :(得分:0)

您可以使用此验证。

'userName' => 'unique:user,username',
'email' => 'unique:user,email'

http://laravel.com/docs/validation#rule-unique

上查看有关此http://four.laravel.com/docs/validation#rule-unique(Laravel 3)或Laravel 4文档的文档