首页 > 解决方案 > Laravel - 如何验证唯一规则请求是否区分大小写

问题描述

我的 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)都是唯一的。同样在编辑规则中,

忽略($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 区分大小写?

谢谢你。

标签: laravelvalidationrules

解决方案


您可以将输入设置为小写,这样您就不必担心用户在表单中输入的内容。

use Illuminate\Support\Str;

之后,您可以在没有命名空间前缀的情况下调用它:

 Str::lower($request->location_name);

推荐阅读