Laravel - 如何向唯一请求规则验证添加额外条件

时间:2021-06-25 16:21:49

标签: laravel

在我的 Laravel-8 验证中,我在规则请求中有此代码:

public function rules()
{       
    return [            
        'name' => [
            'required',
            'string',
            'min:2',
            'max:80',               
            Rule::unique('units')->where(function ($query) {
                return $query->where('company_id', Auth::user()->company_id);
            })                   
        ],                           
    ];        
}

我想在上面的规则请求中添加这个额外的条件:

<块引用>

whereNotNull('parent_id')

我如何实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:2)

我认为您可以添加附加条件

'name' => [
            'required',
            'string',
            'min:2',
            'max:80',               
            Rule::unique('units')->where(function ($query) {
                return $query->where('company_id', Auth::user()->company_id)
                            ->whereNotNull('parent_id');
            })                   
        ],     

您也可以编写自定义验证

'name' => [
        'required',
        'string',
        'min:2',
        'max:80',
        function ($attribute, $value, $fail) {
            $unit=Unit::where('company_id', Auth::user()->company_id)->whereNotNull('parent_id')->exists();
            if ($unit) {
                $fail('The '.$attribute.' is invalid.');
            }
        },
    ],