Может ли кто-нибудь помочь мне сделать этот запрос доктрины Symfony, чтобы сначала возвращалось событие, происходящее сегодня, а затем остальные события в порядке DESC?
Вот что у меня сейчас:
public function getCompanyQuery($company, $adId)
{
$qb = $this->getEntityManager()->createQueryBuilder()
->select('a')->from('AppBundle:ScheduledEvents', 'a')
->where('a.company = :company')->setParameter('company', $company);
if ($adId) {
$qb->andWhere('a.adid = :ad')->setParameter('ad', $adId);
}
return $qb->addOrderBy('a.serverDatetime', 'ASC')->addOrderBy('a.status', 'ASC')->getQuery();
}
====
Если это помогает, я играл с собственным запросом mysql, который, кажется, делает то, что я хочу:
SELECT * FROM tablename WHERE startDate=CURDATE()
UNION ALL
(SELECT * FROM tablename WHERE startDate <> CURDATE() ORDER BY startDate DESC)
====
Может ли кто-нибудь помочь мне изменить мой запрос к доктрине, чтобы он делал то, что делает этот собственный запрос mysql?
С Уважением
И если это порядок, почему бы не вернуть его, например: SELECT * FROM tablename WHERE startDate> = CURDATE () ORDER BY startDate DESC Или мне здесь что-то не хватает, и вы хотите также показать прошлые события? Зачем делать два запроса с уродливым UNION, если можно сделать один?




Здравствуйте, Валентин, лучший способ добиться этого - сделать два разных запроса и объединить результаты. См. stackoverflow.com/questions/32384046/…