Php 日期时间范围不会选择特定日期

Php 日期时间范围不会选择特定日期,php,symfony,datetime,doctrine-orm,symfony4,Php,Symfony,Datetime,Doctrine Orm,Symfony4,我有一个方法可以从数据库返回结果,从startDate到endDate,并在postman中传递类似的参数 看起来一切正常,但它会返回数据库中的所有结果 我认为问题可能在于参数 public function getInvoices($fromDate = null, $toDate = null) { $query = $this->entityManager->getRepository(Invoice::class) ->createQueryBu

我有一个方法可以从数据库返回结果,从startDate到endDate,并在postman中传递类似的参数

看起来一切正常,但它会返回数据库中的所有结果

我认为问题可能在于参数

public function getInvoices($fromDate = null, $toDate = null)
{
    $query = $this->entityManager->getRepository(Invoice::class)
        ->createQueryBuilder('ur')
        ->select('ur')
        ->orderBy('ur.invoiceDate', 'ASC');

    if($fromDate) {
        $query
            ->andWhere('t.invoiceDate >= :startDate')
            ->setParameter('startDate', new \DateTime($fromDate));
    }

    if($toDate) {
        $query
            ->andWhere('t.invoiceDate <= :endDate')
            ->setParameter('endDate', new \DateTime($toDate));
    }

    return $query->getQuery()->getResult();
}
我通过postman传递这两个参数,它返回所有结果:


下面是一幅图像:

通过打印$query->getQuery->getParameters来查看参数是如何发送的。您也可以检查解决方案和相关注释$query->getQuery->getParameters returns[]@Agnohendrixyes,它返回一个对象数组,如果您使用var_dump$query->getQuery->getParameters,您将看到您在查询中设置的每个参数。您的getInvoices看起来很好。检查控制器,可能$this->data['startDate']为空。请发布实际控制器代码,在示例代码中$data是一个局部变量,但您正在将一个实例变量传递给搜索函数:$this->data,并且您没有在任何地方读取实际请求数据。
$data = [];

$responseData = $this->invoiceService->getInvoices(
        @$this->data['startDate'],
        @$this->data['endDate']
    );