Symfony 如何对属于一个日期的数据行进行分页

Symfony 如何对属于一个日期的数据行进行分页,symfony,doctrine-orm,Symfony,Doctrine Orm,我有一张桌子 ID | startdatetime 1 | 2013-08-30 22:30:00 2 | 2013-08-29 12:00:00 3 | 2013-08-29 13:30:00 4 | 2013-08-27 11:30:00 5 | 2013-08-27 13:30:00 6 | 2013-08-26 09:30:00 我想获取属于某个日期的数据(例如,第2行和第3行属于2013-08-29) 我怎么能用教义写作呢 $em = $this->getDoctr

我有一张桌子

ID | startdatetime
1  | 2013-08-30 22:30:00
2  | 2013-08-29 12:00:00
3  | 2013-08-29 13:30:00
4  | 2013-08-27 11:30:00
5  | 2013-08-27 13:30:00
6  | 2013-08-26 09:30:00
我想获取属于某个日期的数据(例如,第2行和第3行属于
2013-08-29

我怎么能用教义写作呢

$em = $this->getDoctrine()->getEntityManager();

$items = $em->getRepository("UserBundle:Table")->findBy('startdatetime' => '*****'));
您有两个选择:

1-快速而肮脏的方法是使用MySQL子字符串从datetime中获取日期:

WHERE SUBSTRING(dateTimeField,1,10) = '2013-08-29'
2-使用,然后您可以选择如下数据:

$q->select('p')
  ->where('YEAR(startdatetime) = :year')
  ->andWhere('MONTH(startdatetime) = :month')
  ->andWhere('DAY(startdatetime) = :day');

$q->setParameter('year', $year)
  ->setParameter('month', $month)
  ->setParameter('day', $day);
另一个解决方案:

存储库中添加
getDay()
函数:

public function getDay($date)
{
    $qb = $this->createQueryBuilder('t');

    $q = $qb
        ->add('where',
        $qb->expr()->like('t.startdatetime', 
            $qb->expr()->literal($date.'%')))
        ->getQuery();

    return $q->getResult();
}
然后调用这个函数:

$items = $em->getRepository("UserBundle:Table")
    ->getDay('2013-08-29');