Laravel 验证:使用 laravel required and if exists together

Laravel Validation: use laravel required and if exists together

我有以下验证要求。

if inventory_purchase_bill == True, lines..sku 应该是 required|exists:items,sku 如果 inventory_purchase_bill == False, lines..sku 应该可以为 null|exists:items,sku

基本上只在存在值时测试exists。如果没有值或为空,则不检查是否存在。

尝试跟随,但二线优先。如何实现?

$validation = $this->validate($request, [
            'inventory_purchase_bill' => 'required',
            'lines.*.sku' => 'exclude_unless:inventory_purchase_bill,false|nullable|exists:items,sku',            
            'lines.*.sku' => 'exclude_unless:inventory_purchase_bill,true|required|exists:items,sku',            
        ]);
'lines.*.sku' =>  function($attribute, $value, $fail) use ($request) {
                if ($request->bill_type == 'Stock Purchase') {
                    if($value !=null && $value != ''){
                        $item = Item::where('sku',$value)->first();
                        if($item == null){
                            return $fail($value.' not in database. Please add new item.');
                        }
                    }else{
                        return $fail('SKU is required.');
                    }
                }
                if ($request->bill_type == 'Expense') {
                    if($value !=null && $value != ''){
                        $item = Item::where('sku',$value)->first();
                        if($item == null){
                            return $fail($value.' not in database. Please add new item.');
                        }
                    }
                }
            },