2015-04-28 42 views
0

我有一個用戶表,其中有一個名爲鎮另一個表的外鍵,使用Propel從另一個表中獲取信息?

現在,我試圖讓所有的用戶,包括他們所屬的小鎮的名字,

$users = UserQuery::create() 
->select(array('fos_user.id, fos_user.username, fos_user.email, town.name')) 
->joinWith('Town') 
->find(); 

我試過這個,但由於某種原因拋出了一個SELECT執行錯誤。如果有人能指出我正確的方向,那將不勝感激。

+0

將錯誤的文本添加到您的問題中 – Jean

回答

0

通過具體指定我想加入的表格來解決這個問題,然後通過select來獲得我想要的字段。

$users = UserQuery::create() 
     ->joinWith('Town') 
     ->select(array('id','username', 'email', 'Town.name')) 
     ->find() 
     ->toArray(); 
0

您正在尋找的答案是useXXXXQuery(),雖然我不認爲這是它的正確用法。

如果您的模式正確,您可以簡單地致電$user->getTown()->getName(),或者您可以在用戶模型getTownName()上調用上述代碼。

一個情況下,你會想用useXXXXQuery()是你在哪裏瞭解有關它在國外表關係的用戶創造了條件:

$users = UserQuery::create() 
        ->filterByAge(13,Criteria::GREATER_THAN) 
        ->filterByStatus('active') 
        ->useTownQuery() 
        ->filterByName('Your Town') 
        ->endUse() 
        ->find(); 

現在,這與對象做。如果你正在處理大量的數據,這可能不是一個好主意,因爲它會佔用大量的內存。我寧願循環遍歷對象而不是數組。使它更清潔,更輕鬆。

相關問題