Я попробовал ниже
$childObjectValidator = v::when(v::notOptional(),
v::attribute('pCode', $codeRegex)
->attribute('pDate', v::date('Y-m-d'))
->attribute('pId', $intPositiveZeroAllowed));
Но тогда KeySet работал для меня, когда совмещал его с , когда
$pValidator = v::keySet(
v::key('pCode', $codeRegex),
v::key('pDate, v::date('Y-m-d')),
v::key('pId', $intPositiveZeroAllowed)
);
$childObjectValidator = v::when(v::notOptional(), $pValidator, v::nullType());
и основной валидатор выглядит как показано ниже
$mainObjectValidators = array(
'id' => $intPositive,
'childObj' => $childObjectValidator
);