2016-08-01 93 views
0

我正在使用Doctrine ORM編寫Symfony3應用程序。Symfony3 Doctrine querybuilder

我有一個擁有我所有屬性及其設置者和獲取者的實體。

嘗試構建,以便我可以根據電子郵件地址檢索一行。

my query: 

     /** 
    * @param $email 
    */ 
    public function getUserByEmail($email) 
{ 
    $repository = $this->db->EntityManagerORM() 
     ->getRepository('TestBundle:User'); 

    $query = $repository->createQueryBuilder('t') 
     ->where('t.emial = :email') 
     ->setParameter(':email', $email) 
     ->getQuery(); 

    $test = $query->getResult(); 

    var_dump($test); 
  1. $這個 - > db是一個EntityManager的是一種服務,在我__construct實例化。所以我所做的是檢索實體,他們創建了一個queryBuilder,我想要檢索整個行的哪個電子郵件==給定的電子郵件。

    響應我得到:

    "Notice: Undefined index: [Semantical Error] line 0, col 63 near 'emial 
    

    =:EMA「:錯誤:類檢驗\ TestBundle \實體\用戶沒有字段或

    協會命名EMIAL」

什麼可疑在我的代碼....?

回答

1

這是電子郵件的拼寫。更改爲:

$query = $repository->createQueryBuilder('t') 
     ->where('t.email = :email') 
     ->setParameter(':email', $email) 
     ->getQuery(); 

這應該解決問題。

+0

OMG我感到有點尷尬:P但感謝您發現它。這是唯一的問題。 – John

+0

沒問題,我們通常需要另一個人來幫助我們查看我們的代碼。 –

1

有沒有需要:setParameter函數。

代碼中的另一個錯誤是,用戶表沒有名稱爲emial的列。仔細檢查並用適當的名稱替換它。

所以您的查詢就會是這個樣子,

$query = $repository->createQueryBuilder('t') 
     ->where('t.RIGHT_COLUMN_NAME = :email') 
     ->setParameter('email', $email) 
     ->getQuery(); 

在上面的代碼中有正確的列名替換RIGHT_COLUMN_NAME

+0

嘿,我可以保證你這個專欄存在哈哈。 – John

+0

和:我只是添加到從table.column區分參數,所以代碼更易讀 – John

相關問題