我有一个表states
,字段是id,country_id,state_code,state_name
。现在,我要验证同一国家/地区在表中没有相同的state_code
和相同的state_name
我尝试过,但是没有用。
在我的控制器中:
$validator = State::validator($request->all(), $id);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator->getMessageBag())
->withInput($request->all());
}
这是我在模型中的验证功能:
protected function validator(array $data, $id)
{
return Validator::make($data, [
'country_id' => 'required',
'state_code' => 'required',
'state_name' => 'required',
]);
}
如果没有自定义验证,该如何解决?
答案 0 :(得分:1)
首先,您的验证规则仅检查请求中是否存在这些字段。没有验证发生在数据库中存在一个值。首先,您可能想浏览rule_exists
的文档。其次,您可能必须根据文档更新此规则的查询
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::exists('staff')->where(function ($query) {
$query->where('account_id', 1);
}),
],
]);
您可以在此处传递其他查询参数。
答案 1 :(得分:0)
您不需要为此进行自定义验证,laravel具有唯一的列验证
col2
通过这种方式,您可以确定idx = df[df[col1] == ""].index # i guess definition of empty is ""
df.loc[idx,col1] = df.loc[idx][col2] + df.loc[idx][col1]
中的列值与$this->validate($request, [
'country_id' => 'required',
'state_code' => 'required|unique:states,state_name',
'state_name' => 'required|unique:states,state_code',
]);
相比是唯一的,以进行更多检查docs