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