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

Validation check (if 1 equal to some value from database) Laravel 5

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

这是我尝试做的事情:我有 table users 并且在 table 用户中我有额外的列 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; 
    }

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

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

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

所以现在将验证 users 是否与 users table 中的 user_id 匹配,其中 admin_id 等于 1.

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

    $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);
            }),
        ],
    );