2017-08-09 42 views
-1

我得到這個錯誤[語義錯誤]行0,列102附近'pw WHERE pw.startdate':錯誤:'pw'已被定義。這是我的:Symfony2 Doctrine定製存儲庫類[語義錯誤]第0行,第102行

public function findBystartdateAndenddate($startdate, $enddate) 
{ 
    return $this 
    ->createQueryBuilder('pw') 
    ->select('pw') 
    ->from ('comtwclagripayrollBundle:Payrollweek','pw') 
    ->where ('pw.startdate = :startdate and pw.enddate = :enddate') 
    ->setParameter('startdate', $startdate) 
    ->setParameter('enddate', $enddate) 
    ->getQuery() 
    ->getResult(); 
+0

'公共職能findBystartdateAndenddate($開始日期,結束日期$)'這裏使用存儲庫? –

+0

是的,這是一個自定義存儲庫 – Sue

回答

0

請刪除->from ('comtwclagripayrollBundle:Payrollweek','pw')。因爲你可以使用->createQueryBuilder('pw')當前庫

public function findBystartdateAndenddate($startdate, $enddate) 
{ 
    return $this 
    ->createQueryBuilder('pw') 
    ->select('pw') 
    ->where ('startdate = :startdate and enddate = :enddate') 
    ->setParameter('startdate', $startdate) 
    ->setParameter('enddate', $enddate) 
    ->getQuery() 
    ->getResult(); 
1
->from ('comtwclagripayrollBundle:Payrollweek') 

已創建對象這應該工作

1
->from ('comtwclagripayrollBundle:Payrollweek') 

,如果你想嘗試DQL:

$query =$this->_em->createQuery('select a, DATE_DIFF(startdate, enddate) from "" '); 


public function getByDate(\Datetime $date) 
{ 
    $from = new \DateTime($date->format("Y-m-d")." 00:00:00"); 
    $to = new \DateTime($date->format("Y-m-d")." 23:59:59"); 

    $qb = $this->createQueryBuilder("e"); 
    $qb 
     ->andWhere('e.date BETWEEN :from AND :to') 
     ->setParameter('from', $from) 
     ->setParameter('to', $to) 
    ; 
    $result = $qb->getQuery()->getResult(); 

    return $result; 
} 
+0

好的謝謝,但我不想有日期差異。我希望他們匹配。 – Sue

+0

它的okey你只是想比較2日期我想你需要轉換日期,因爲日期在數據庫和日期在PHP他們沒有相同的格式。 –

1

你可以試試這個: 您的錯誤是兩次使用pw->createQueryBuilder('pw')->from ('comtwclagripayrollBundle:Payrollweek','pw')

public function findBystartdateAndenddate($startdate, $enddate) 
{ 
    return $this 
     ->createQueryBuilder('pw') 
     ->select('pw') 
     ->where ('pw.startdate = :startdate') 
     ->andWhere('pw.enddate = :enddate') 
     ->setParameter('startdate', $startdate) 
     ->setParameter('enddate', $enddate) 
     ->getQuery() 
     ->getResult(); 
} 

您也可以在通話Controller標準f.e:

$this->getDoctrine()->getRepository('YourFooBundle:YourEntity')->findBy(array('startdate' => $startdate, 'enddate' => $enddate)); 
+0

這是問題https://stackoverflow.com/questions/45618502/using-count-in-doctrine-query-language。 – Sue