myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Active Query как применить функцию из модели?

Доброго дня!

Применение фильтра ProfileSearch
$query = Profile::find()->activeJudgeComitet($this);

Active Query Profile
/**
     * Запрос только активных пользователей с действующей судейской категорией
     * @return string
     * @param $model - Судейские категории 
     */
    public function activeJudgeComitet($model)
    {
        return $this->joinWith('judgeComitet')->andWhere(['date_from'=> $model->judgeComitet->getDateTo()]);
    }


Нужно вывести записи, которые больше даты действия ('date_from'), рассчитываемая через функцию getDateTo()

Модель JudgeComitet
/**
     * Фунция рассчёта даты действия категории
     * @return string
     */
    public function getDateTo()
    {
        $date = date_create(date('Y-m-d', strtotime($this->date_from)));//Создаем дату для рассчёта срока
        $date = date_modify($date, $this->category->duration_months.'month');//Прибавляем дату к текущей
        return Yii::$app->formatter->asDate($date);

    }


Не могу сообразить, как применить функцию из модели в Active Query. Подскажите пожалуйста
  • Вопрос задан
  • 148 просмотров
Решения вопроса 2
qonand
@qonand
Software Engineer
передавайте дату в метод active в качестве параметра, например:
public function active($date)
{
    return $this->andWhere(['date_from'=>$date ]);
}


и у же в нужных местах при вызове метода active подставляйте нужную дату
Ответ написан
@sagechild
программист php
Как уже написали выше - передавать готовую дату в функцию active, либо если принципиально вызывать функцию в методе, то передавайте модель в качестве параметра и вызывайте ее функцию:
public function active($model)
{
    return $this->andWhere(['date_from'=>$model->getDateTo() ]);
}


Или вопрос кроется в чем-то другом?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы