2012-08-13 151 views
-1

我在列表和類別之間建立了多對多的關係。我試圖使用$ listing-> setCategories($ categories)來設置列表的類別。我沒有得到錯誤,但關係沒有保存到數據庫。Doctrine2 Zend多對多關係問題

我將在下面列出所有相關代碼。

映射文件

清單映射

<many-to-many field="categories" target-entity="Default_Model_Category" mapped-by="listings" > 
    <cascade> 
     <cascade-persist/> 
    </cascade> 
</many-to-many> 

Categrory映射

<many-to-many field="listings" target-entity="Default_Model_Listing" inversed-by="categories"/> 

我有所有相關變量和模型文件get/set函數。

試圖保存控制器中的關係。

$catModel = $this->em->getRepository('Default_Model_Category'); 
    $catArray = array(); 
    foreach($categories as $single) { 
     $catArray[] = $catModel->findOneById($single); 
    } 
    $listing->setCategories($catArray); 
    $this->em->flush(); 

感謝您的幫助。

回答

0

我有一個類似的錯誤。我不知道是什麼導致它,但我有保存新的關係之前保存值的空數組:

如:

​​

[編輯]

它看起來像你正在將父類別分配給兒童列表。簡而言之,教義是說父母是正確的,孩子是錯的,所以孩子上市不能分配一個新的父母。嘗試顛倒代碼?

$catModel = $this->em->getRepository('Default_Model_Category'); 
foreach($categories as $single) { 
    $cat = $catModel->findOneById($single); 
    $listingArray = $cat->getListings(); 
    $listingArray[] = $listing; 
    $cat->setListings($listingArray); 
    $this->em->flush(); 
} 
+0

謝謝。我已經嘗試過了,但我肯定在某個地方犯了錯誤。 :) – jjmu15 2012-08-15 10:07:08