【发布时间】:2014-04-12 00:14:51
【问题描述】:
我有一个名为 Menu 的实体,其中包含 Category 实体的集合,其中包含 Product 实体的集合。
$menu->fillMenu($categoriesData);
$categoriesData 包含一个数组中的所有类别和产品。 fillMenu功能是更新分类和产品,添加新的分类和产品,删除不在$categoriesData中的分类和产品。但是这个函数只适用于内存中的集合,而不是数据库。所以我添加了代码:
foreach ($menu->getCategories() as $category) {
foreach ($category->getProducts() as $product) {
$em->persist($product);
}
$em->persist($category);
}
$em->flush();
现在所有更新和新的类别和产品都保存在数据库中,但是如何删除被fillMenu函数删除的类别和产品?是否有可能从集合中获取对已删除对象的引用,然后代码将是:
$em->remove($deletedCategory);
编辑
我认为,我应该返回所有要被fillMenu 函数删除的实体。然后遍历它们并执行$em->remove($entity)。但我认为这不是很好的方式。你怎么看,在 Symfony2 中执行此操作的正确方法是什么?
【问题讨论】: