И и ИЛИ выражение в доктрине ODM
Мне нужно преобразовать запрос SQL в запрос DQL:
SELECT * FROM object WHERE stardate >= GETDATE() AND enddate <= GETDATE() OR stardate >= GETDATE() AND enddate IS NULL
Я пробовал с:
$now = new \DateTime();
$qb = $this->createQueryBuilder()
->field('startDate')->lte($now)
->field('endDate')->gte($now);
$qb->addOr(
$qb->expr()
->field('startDate')->lte($now)
->field('endDate')->exists(false)
);
return $qb->getQuery()->execute();
Но это не правильно.
1 ответ
Решение
Решение:
$now = new \DateTime('01/01/2018');
$qb = $this->createQueryBuilder();
$qb->addOr(
$qb->expr()
->field('startDate')->lte($now)
->field('endDate')->gte($now)
);
$qb->addOr(
$qb->expr()
->field('startDate')->lte($now)
->field('endDate')->exists(false)
);
return $qb->getQuery()->execute();