2013-10-22 32 views
0

我有類似的表。如何創建屬於一個日期的數據行

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

回答

2

你有兩個選擇:

1 - 快速和骯髒一種是使用MySQL的子串獲取日期從日期時間:

WHERE SUBSTRING(dateTimeField,1,10) = '2013-08-29' 

2 - 使用DoctrineExtensions和那麼你可以選擇這樣的數據:

$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); 
0

另一種解決方案:

Table庫添加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'); 
相關問題