2012-09-07 44 views
3

我現在已升級到Doctrine 2.2.2。我已經成功地將我的數據庫連接到我的應用程序,並能夠生成代理和存儲庫。那一代我沒有問題。我對使用原則2.2.2的DQL感到困惑。 情況是這樣的:我目前有一個存儲庫類負責用戶註冊,身份驗證等,我設法執行它的DQL,但我只是覺得這個東西(在我的存儲庫類)怪異。如何正確編寫Doctrine 2 DQL查詢?

$query = $em->createQuery("SELECT u FROM MyProject\\Entity\\AdminUsers u"); 

我也試過:

$query = $em->createQuery("SELECT u FROM AdminUsers u"); 

最後沒有工作,但第一個工作正常,但它似乎不可思議。在教條2中執行DQL是否真的是正確的方式?還是我錯過了一些重要的東西。

注意:在這個倉庫類的上述聲明是:

namespace MyProject\Repository; 

use Doctrine\ORM\EntityRepository, 
    MyProject\Entity\AdminUsers; 
+0

感謝編輯.. :) – Aldee

回答

3

它幾乎是做正確的方式。如果您使用單引號',則可以使用單個反斜槓\而不是雙反斜槓\\

學說不能找出(或這將是非常昂貴的)你通過use陳述導入哪些類。

但是你可以使用你通過從實體管理器檢索類型庫:

$repo = $em->getRepository('MyDomain\Model\User'); 
$res = $repo->findSomeone(); 

而在findSomeone()功能,你可以這樣做:

$qb = $this->createQueryBuilder('u'); 
$dql = $qb->where('u.id = 1')->getDQL(); 

return $this->_em->createQuery($dql)->getSingleResult(); 

含義,倉庫已經鍵入您的實體並知道從哪個類中進行選擇。

有些文檔:

+0

非常有用的答案和鏈接。 。thanks max .. :) – Aldee