Datetime 将日期时间变量传递到条令查询的正确方法是什么?

Datetime 将日期时间变量传递到条令查询的正确方法是什么?,datetime,doctrine-orm,symfony,Datetime,Doctrine Orm,Symfony,我正在寻找一种正确的方法来填充一个包含发票表的页面,该发票表可以通过两个datepicker字段进行筛选,以定义日期范围 目前,我正在尝试将$min和$max日期作为路线参数传递,但不确定这是否是最佳方式 我当前的控制器是: /** ********************************************************************************************* * @Route("/invoices/view/monthly-{min}

我正在寻找一种正确的方法来填充一个包含发票表的页面,该发票表可以通过两个datepicker字段进行筛选,以定义日期范围

目前,我正在尝试将
$min
$max
日期作为路线参数传递,但不确定这是否是最佳方式

我当前的控制器是:

/** *********************************************************************************************
 * @Route("/invoices/view/monthly-{min}-{max}"  ,name="view_monthly_invoices", defaults={"min"="2015-01-16", "max"="2016-01-17"})
 ********************************************************************************************** */
public function viewMonthlyInvoicesAction(Request $request, \DateTime $min, \DateTime $max)
{
    $em = $this->getDoctrine()->getManager();
    $invoicesinrange = $em->getRepository('AppBundle:Invoice')->invoicesWithinDates($min, $max);

    return $this->render('invoices/view.daterange.invoices.html.twig', array(
        'dues' => $invoicesinrange,
        'min'=>$min,
        'max'=>$max,
    ));
我的存储库查询是:

public function invoicesWithinDates($min,$max)
{
    return $this->createQueryBuilder('i')
        ->select('i', 'p','g')
        ->leftJoin('i.payment_ids', 'p')
        ->leftJoin('i.member_id','m')
        ->andWhere('i.invoicedate > :min')
        ->andWhere('i.invoicedate < :max')
        ->addOrderBy('m.surnamename1', 'ASC')
        ->addOrderBy('m.surnamename2', 'ASC')
        ->setParameter('min', $min)
        ->setParameter('max', $max)
        ->getQuery()
        ->getResult();
}
public function invoicesWithinDates($min,$max)
{
返回$this->createQueryBuilder('i')
->选择('i','p','g')
->leftJoin('i.payment\u id','p')
->leftJoin('i.member_id','m')
->andWhere('i.invoicedate>:min')
->andWhere('i.invoicedate<:max')
->addOrderBy('m.namesname1','ASC')
->addOrderBy('m.namesname2','ASC')
->setParameter('min',$min)
->setParameter('max',$max)
->getQuery()
->getResult();
}

例如,当我转到
/invoices/view/monthly
时,上面的代码正在加载页面ok
$min
$max
都正确返回默认日期时间对象,但是,
$DUE
总是填充所有的发票,而不仅仅是日期范围内的发票。

尝试如下格式化日期:

...
->setParameter('min', $min->format('Y-m-d'))
->setParameter('max', $max->format('Y-m-d'))
...
试试这个:

->where('i.invoicedate > :min AND i.invoicedate < :max')
->其中('i.invoicedate>:min和i.invoicedate<:max')

您使用哪个版本的条令ORM(您可以使用
composer show-i条令/ORM
获取该信息)?您的
发票
类的映射配置是什么样子的?谢谢@xabbuh-我最终使用了Dan下面的答案:)以防对其他人有所帮助-我通过稍微调整格式('Y-m-d h:m:s')