Когда кто-то пользуется сервисом, например выделяет объявление, то простой выборкой через реляцию можно получить все выделенные объявления, на примере кастомного квери:
Код: Выделить всё
$this->joinWith([
'service' => function($query) {
$query->andWhere('date_start < :date AND date_expiration > :date', [':date' => date('Y-m-d H:i:s')]);
}
]);
Код: Выделить всё
public function getService()
{
return $this->hasOne(Service::className(), ['advert_id' => 'advert_id'])->andWhere(['service' => Service::SERVICE_ADVERT_IN_TOP]);
}
Тоесть записей в таблице сервисы может и не быть, в могут быть но просрочены по date_expiration или еще не активны по date_start