在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;
}
我不知道这里的users
输入是什么——它是否来自users
表?如果是,您可以通过以下方式创建规则:
$rules = array(
'projects' => 'required',
'users' => ['required', 'exists:users,id,admin_id,1']
);
因此,现在将验证users
是否与users
表中的user_id
匹配,其中admin_id
等于1
。
您还应该考虑Laravel 5
请求对象来验证输入。它比将代码放入控制器/模型/存储库要干净得多。有关Recust 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);
}),
],
);
$rules = array(
'users' => 'exists:users,admin_id'
);
,其中users表名。可以看出,您还想使用用户作为表单字段名称