Можно ли сделать такую валидацию? Не нашёл подобных примеров в документации.
$judgeID = $this->judgeComitet->judge_id;
$judge_comitetArray = JudgeComitet::find()->select('id')->where(['judge_id'=>$judgeID])->asArray()->all();
$AppoinmentJudge = Appointment::find()->where(['judge_comitet_id'=>$judge_comitetArray])->count();
$judge_comitetArray = JudgeComitet::find()->select('id')->where(['judge_id'=>$judgeID])->asArray()->all();
public function getAppointments()
{
return $this->hasMany(Appointment::className(), ['judge_comitet_id' => 'id']);
}
public function getJudgeComitet()
{
return $this->hasOne(JudgeComitet::className(), ['id' => 'judge_comitet_id']);
}
$judgeComitets = $this->judgeComitets;
$this->judgeComitets->appointments->judge_comitet_id;
$judgeComitets = $this->judgeComitets;
var_dump($judgeComitets);
$judgeComitets = $this->judgeComitet->judge_id; //ищем id судьи у выбранной категории судьи.
public function getDateTo($dateCorretc)
{
$date = date_create(Yii::$app->formatter->asDate('now', 'php:Y-m-d'));//Создаем дату для рассчёта срока
$date = date_modify($date, $dateCorretc);//Прибавляем дату к текущей
return Yii::$app->formatter->asDate($date, 'php:Y-m-d');
//return $dateTo = strtotime($date);
}
public function validateMaxCountApp()
{
$AppointmentCount = Appointment::find()
->select('created_at')
->where(['>=','created_at',strtotime(self::getDateTo('- 1 year 2 month'))])//За период
->innerJoinWith('judgeComitet')
->select('judge_id')
->where(['judge_id'=>$this->judgeComitet->judge_id])//У выбранного судьи
->asArray()
->count();
$appCountToYear = 6; //Максимальное кол-во назначений за 1 год и 2 месяца
//Если назначений больше, чем $appCountToYear, тогда ошибка
if ( $AppointmentCount > $appCountToYear) $this->addError('*', 'Судья не может быть назначен больше '.$appCountToYear.' раз за 1 год и 2 месяца!');
//if ( $appCountToYear < 2) $this->addError('*', 'Судья не может быть назначен два года подряд'.$appCountToYear.'на одно и тоже событие!');
}