我遵循doctrineation documnetation開始。這裏是documentation。主義toarray不轉換關係
我的代碼是
$User = Doctrine_Core::getTable("User")->find(1);
,當我通過$用戶 - > PHONENUMBERS訪問的關係,它的工作原理。當我通過使用toArray()方法將User對象轉換爲數組時,它不會將關係轉換爲數組。它只是顯示$用戶數據。
我錯過了什麼嗎?
我遵循doctrineation documnetation開始。這裏是documentation。主義toarray不轉換關係
我的代碼是
$User = Doctrine_Core::getTable("User")->find(1);
,當我通過$用戶 - > PHONENUMBERS訪問的關係,它的工作原理。當我通過使用toArray()方法將User對象轉換爲數組時,它不會將關係轉換爲數組。它只是顯示$用戶數據。
我錯過了什麼嗎?
通過使用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數據也是如此。
我也注意到這種情況下的異常情況,如果您先調用關係,然後調用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賦值,它不會。
我猜這是由於原則只是首先獲取一條記錄,並且只有當您嘗試訪問獲取其他相關表的外鍵值時