Zend framework Doctrin2 Zend多对多关系问题
我在列表和类别之间建立了多对多关系。我正在尝试使用$listing->setCategories($categories)为列表设置类别。我没有收到错误,但关系未保存到数据库 我将在下面列出所有相关代码 映射文件 列表映射Zend framework Doctrin2 Zend多对多关系问题,zend-framework,doctrine-orm,many-to-many,database-relations,Zend Framework,Doctrine Orm,Many To Many,Database Relations,我在列表和类别之间建立了多对多关系。我正在尝试使用$listing->setCategories($categories)为列表设置类别。我没有收到错误,但关系未保存到数据库 我将在下面列出所有相关代码 映射文件 列表映射 <many-to-many field="categories" target-entity="Default_Model_Category" mapped-by="listings" > <cascade> <cas
<many-to-many field="categories" target-entity="Default_Model_Category" mapped-by="listings" >
<cascade>
<cascade-persist/>
</cascade>
</many-to-many>
谢谢你的帮助。我也有类似的错误。我不知道是什么原因造成的,但在保存新关系之前,我必须保存一个空的值数组: 例如: [编辑] 看起来您正在将父类别分配给子列表。简单地说,该理论认为父母是对的,孩子是错的,所以孩子列表不能指定新的父母。试着反转代码
$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();
}
谢谢我已经试过了,但一定是在什么地方出错了。:)
$catModel = $this->em->getRepository('Default_Model_Category');
$catArray = array();
foreach($categories as $single) {
$catArray[] = $catModel->findOneById($single);
}
$listing->setCategories($catArray);
$this->em->flush();
$listing->setCategories(array()); //clear current relationships
$this->em->flush();
$listing->setCategories($catArray); // save new relationships
$this->em->flush();
$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();
}