我的Laravel-5.8中有此规则
规则:创建
public function rules()
{
return [
'location_name' => [
'required',
'string',
'min:3',
'max:80',
Rule::unique('hr_work_locations', 'location_name', 'company_id')
],
];
}
规则:修改
public function rules()
{
return [
'location_name' => [
'required',
'string',
'min:3',
'max:80',
Rule::unique('hr_work_locations', 'location_name', 'company_id')->ignore($this->work_location)
],
];
}
根据规则,location_name对于每个公司(company_id)都是唯一的。同样在修改规则中,
ignore($ this-> work_location)
是路线
控制器:创建
public function store(StoreWorkLocationRequest $request)
{
try {
$worklocation = HrWorkLocation::create([
'location_name' => $request->location_name,
'is_active' => 1,
]);
Session::flash('success', 'Work Location is created successfully');
return redirect()->route('hr.work_locations.index');
}
catch (Exception $exception)
{
Session::flash('error', 'Action failed!');
return redirect()->route('hr.work_locations.index');
}
}
我观察到它允许location_name为英格兰或英国。
如何使Rule :: unique区分大小写?
谢谢。
答案 0 :(得分:0)
您可以将输入变为小写,这样就不必担心用户在表单中输入的内容。
Str::lower($request->location_name);
在那之后,您可以在没有名称空间前缀的情况下调用它:
{{1}}
答案 1 :(得分:0)
在boot()方法下向AppServiceProvider.php添加自定义验证:
df2.to_csv(output(os.path.join(name+'//_modified.csv'),sep=';',header=False,index=False)
可以进一步扩展以接受与唯一规则类似的其他参数 现在我的$ rules看起来像这样:
Validator::extend('iunique', function ($attribute, $value, $parameters, $validator) {
$query = DB::table($parameters[0]);
$column = $query->getGrammar()->wrap($parameters[1]);
return ! $query->whereRaw("lower({$column}) = lower(?)", [$value])->count();
});
查看已报告here的问题