2012-08-13 138 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