验证检查(如果1等于数据库中的某个值)Laravel 5

时间:2015-03-21 13:06:20

标签: php mysql laravel-5

Laravel 5中是否有任何方法可以检查某些值是否与数据库中的值相等?

以下是我尝试做的事情:我有表users,在表格用户中我有其他列admin_id。在验证中,我需要检查admin_id表单数据库是否等于1

这是我目前的代码:

  $inputs = array(
        'projects' => Input::get('project'),
        'users'    => Input::get('workers')

    );

    $rules = array(
        'projects' => 'required',
        'users'    => 'required'
    );

    $validator = Validator::make($inputs,$rules);
    if($validator->fails()){
        return false;            
       }else{
        return true; 
    }

3 个答案:

答案 0 :(得分:5)

我不知道这里输入的是什么users - 是否来自users表?如果是,您可以这样创建规则:

$rules = array(
        'projects' => 'required',
        'users'    => ['required', 'exists:users,id,admin_id,1']
    );

现在,我们将验证users是否与user_id表中的users匹配admin_id等于1

您还应该考虑Laravel 5请求对象来验证输入。它比在Controller / Model / Repository中放置代码要干净得多。 More about Requst Validation

答案 1 :(得分:0)

用户表名称的

$rules = array( 'users' => 'exists:users,admin_id' );。可以看到你也想使用用户作为表单字段名称

答案 2 :(得分:0)

    $rules = array(
        'projects' => 'required',
        'users' => [
            'required',
            Rule::exists('users', 'id')->where(function ($query) {
                $query->where('admin_id', 1);
            }),
        ],
    );

或者如果admin_id是动态的,请使用:

    $variable = 1;
    $rules = array(
        'projects' => 'required',
        'users' => [
            'required',
            Rule::exists('users', 'id')->where(function ($query) use ($variable) {
                $query->where('admin_id', $variable);
            }),
        ],
    );