2

我需要将 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();

但这是不正确的。

4

1 回答 1

2

解决方案 :

$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();
于 2014-04-03T09:34:11.663 回答