2010-03-25 60 views
0

我遵循doctrineation documnetation開始。這裏是documentation主義toarray不轉換關係

我的代碼是

$User = Doctrine_Core::getTable("User")->find(1); 

,當我通過$用戶 - > PHONENUMBERS訪問的關係,它的工作原理。當我通過使用toArray()方法將User對象轉換爲數組時,它不會將關係轉換爲數組。它只是顯示$用戶數據。

我錯過了什麼嗎?

回答

1

通過使用find方法,您只能檢索User數據,這就是爲什麼toArray的返回限制爲該數據的原因。您需要指定要加載的附加數據,並且通常在原始查詢中執行此操作的最佳位置。從你掛例如,添加選擇部分:

$q = Doctrine_Query::create() 
    ->select('u.*, e.*, p.*') // Example only, select what you need, not * 
    ->from('User u') 
    ->leftJoin('u.Email e') 
    ->leftJoin('u.Phonenumbers p') 
    ->where('u.id = ?', 1); 

然後toArray'ing從結果時,你應該看到相關的電子郵件和PhoneNumber數據也是如此。

0

我也注意到這種情況下的異常情況,如果您先調用關係,然後調用ToArray,則會以某種方式包含關係。我的意思是,拿你自己的例如,

$User = Doctrine_Core::getTable("User")->find(1); 
$num= $User->Phonenumbers->office; // assumed a field 'office' in your phone num table 
$userArray = $user->toArray(true); 

在上面的情況下,$ userArray莫名其妙包含整個關係。如果我們刪除$ num賦值,它不會。

我猜這是由於原則只是首先獲取一條記錄,並且只有當您嘗試訪問獲取其他相關表的外鍵值時