Проверка базы данных атрибутов братьев и сестер Laravel - PullRequest
0 голосов
/ 29 января 2019

У меня есть массив атрибутов в моей полезной нагрузке, как показано ниже:

{
    "courier_code" : "shipadelivery",
    "rule" : [ 
                {
                    "attribute" : "day",
                    "operator" : "eq",
                    "value" : "tue"
                }
            ],
    "is_active" : true,
    "priority" : 2
}

здесь мне нужно проверить, что если атрибут - день, то значение должно быть в ['mon','tue','wed','thu','fri','sat','sun'], а оператор должен бытьeq

Как мне выполнить проверку с использованием существующих атрибутов attribut.Я уже сделал проверку для этого не проверять атрибут, как следует

        $days = 'mon,tue,wed,thu,fri,sat,sun';
        $rules = [
            'courier_code' => 'required|exists:shipment_companies,code',
            'is_active' => 'required|boolean',
            'priority' => 'required|integer',
            'rule' => 'required',
            'rule.*.attribute' => 'required',
            'rule.*.attribute' => 'required|in:'.$attributes,
            'rule.*.value' => 'required',
            'rule.*.operator' => 'required|in:'.$operators,
        ];

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать conditiosn для динамического добавления правил в массив правил

use Illuminate\Validation\Rule;

$rules = [
    'courier_code' => 'required|exists:shipment_companies,code',
    'is_active' => 'required|boolean',
    'priority' => 'required|integer',
    'rule' => 'required',
    'rule.*.attribute' => 'required',
    'rule.*.operator' => [
        'required',
        Rule::in($operators),
    ],
];

if($request->filled('key-to-check') && $request->input('key-to-check') == 'day'){
    $rules['rule.*.value'] = 'required|in:'.implode(',', $attributes);
}

Поскольку это массив, вы можете запустить цикл:

foreach($request->input('rule') as $key => $value){
        $rule_key = 'rule.'.$key.'.value';

        if($value['attribute'] == 'day'){
            $rules[$rule_key] = 'required|in:'.$days;
        }else{
            $rules[$rule_key] = 'required';
        }
    }

Надеюсь, это поможет

...