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');