我正在寻找填充包含发票表的页面的正确方法,该发票表可以通过两个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();
}
例如,当我转到/invoices/view/monthly
时,上面的代码正在加载页面确定。 $min
和$max
都正确地返回默认的日期时间对象,但$dues
总是会被所有发票填充,而不仅仅是在{日期范围。
答案 0 :(得分:0)
尝试格式化日期,如下所示:
...
->setParameter('min', $min->format('Y-m-d'))
->setParameter('max', $max->format('Y-m-d'))
...
答案 1 :(得分:0)
试试这个:
->where('i.invoicedate > :min AND i.invoicedate < :max')