И и ИЛИ выражение в доктрине 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();
Другие вопросы по тегам