在dateTime与doctrine之间选择行


Selecting rows between dateTime with doctrine

我想在initialDate和finalDate之间选择行,其中一个来自提交的表单,我已经在localhost上这样做了(它工作良好):

public function getReport($initialDate, $finalDate)
{
    $qb = $this->createQueryBuilder('s')
                ->where('s.date BETWEEN :initialDate AND :finalDate')
                ->setParameter('initialDate', $initialDate->format('Y-m-d'))
                ->setParameter('finalDate', $finalDate->format('Y-m-d'));
    return $qb->getQuery()->getResult();
}

但是当我托管我的网站时,它返回0结果我不知道什么是错的

您应该设置DateTime对象,而不是将其格式化为字符串。

试一试:

public function getReport($initialDate, $finalDate)
{
    $qb = $this->createQueryBuilder('s')
                ->where('s.date BETWEEN :initialDate AND :finalDate')
                ->setParameter('initialDate', $initialDate)
                ->setParameter('finalDate', $finalDate);
    return $qb->getQuery()->getResult();
}
public function getReport($initialDate, $finalDate)
{
    $qb = $this->createQueryBuilder('s');
                ->where('s.date BETWEEN :initialDate AND :finalDate')
                ->setParameter('initialDate', $initialDate)
                ->setParameter('finalDate', $finalDate);
    return $qb->getQuery()->getResult();
}

您可以使用EXPR组件执行如下的BETWEEN语句:

public function getReport($initialDate, $finalDate)
{
    $qb = $this->createQueryBuilder('s');
    $qb->where($qb->expr()->between('s.date',':initialDate',':finalDate'))
        ->setParameter('initialDate', $initialDate)
        ->setParameter('finalDate', $finalDate);
    return $qb->getQuery()->getResult();
}

希望对您有所帮助