2012-04-24 68 views
1

這個查詢:主義2.1.5 setFirstResult()共用產生誤差在MySQL 5.5

$this->getEntityManager() 
     ->createQuery("SELECT k FROM FooBarBundle:Kode k WHERE k.kode LIKE :keyword OR k.nama LIKE :keyword ORDER BY k.kode ASC") 
      ->setParameter("keyword", "%$keyword%") 
      ->setMaxResults($limit) 
      ->setFirstResult($offset) 
     ->getResult(); 

生成的SQL語句錯誤:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OFFSET 0' at line 1 

但如果我刪除setFirstResult($offset)線,它工作正常。有沒有任何解決方法,而不是升級整個Doctrine庫(一個補丁可能沒問題)?

回答

1

我想你必須從查詢中刪除

ORDER BY k.kode ASC 

,並設置其與方法是這樣的:

$this->getEntityManager() 
     ->createQuery("SELECT k FROM FooBarBundle:Kode k WHERE k.kode LIKE :keyword OR k.nama LIKE :keyword") 
      ->setParameter("keyword", "%$keyword%") 
      ->setMaxResults($limit) 
      ->setFirstResult($offset) 
      ->orderBy("k.kode") 
      ->getResult(); 
+1

不知怎的,它的工作原理。謝謝。現在我需要升級整個symfony框架...... – Furunomoe 2012-04-30 02:50:01