Всем привет)) Довольно простой вопрос для знатоков, но не могу допереть как сделать в
ActiveQuery. В модели вывожу прекрасно.
Есть таблица событий:
event
id | to_event | name
id - Айдишник события
to_event - событие, к которому принадлежит событие (может и не принадлежать - NULL)
name - название события
и регистрации на мастер-классы
RegMk
id | event_id
id - Айдишник события
event_id - id событие на которое регистрируется.
Мне нужно в выводить все регистрации своего события + те, которые являются "ребенками" этого события (у кого есть to_event == текущее событие)
В
ActiveQuery вывожу регистрации текущего события
public function currentEvent($event_id)
{
return $this->andWhere(['[[event_id]]' => $event_id])
}
Нужно примерно такое:
public function currentEvent($event_id)
{
$this->andWhere(['[[event_id]]' => $event_id]);
$to_event = '?';//Нужно получить по связи
//Если у текущего события есть значение to_event и оно равно текущему событию, то ищем такие записи
if ($to_event && $to_event == $event_id) {
$this->orWhere(['[[event_id]]' => $to_event]);
}
return $this;
}
Использую связанные данные в модели
RegMk/**
* @return \yii\db\ActiveQuery
*/
public function getToEvent()
{
return $this->hasOne(Event::className(), ['to_event' => 'event_id']);
}
Суть такая, что при формировании такого запроса
RegMk::find()->currentEvent(1)->all()
Нужно выдавать регистрации события текущего события (1) и регистрации ребенков