我有一个Item对象,它与类别有1:n的关系。我的项目模型包含:
setCategories(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $categories)
getCategories()
addCategory(VENDX\Items\Domain\Model\Category $category)
removeCategory(VENDX\Items\Domain\Model\Category $category)
但我无法在项目对象中添加多个类别。 我试过了:
$category = $this->objectManager->get('VENDX\Items\Domain\Model\Category');
$category->setCatName('Cat1'); //First category
$item->addCatgeory($category);
$category->setCatName('Cat2'); //Second category
$item->addCategory($category);
<$>将$ item添加到我的$ itemrepository后,它只保存了最后一个类别&#34; Cat2&#34;进入数据库。我错过了什么?
也试过了:
$categories = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\ObjectStorage');
$category = $this->objectManager->get('VENDX\Items\Domain\Model\Category');
$category->setCatName('Cat1'); //First category
$categories->attach($category);
$category->setCatName('Cat2'); //Second category
$categories->attach($category);
$item->setCategories($categories);
与上述代码相同的问题。它只保存最后(第二)类别。如何在项目对象中添加多个类别?
答案 0 :(得分:1)
使用SAME类别对象时,我犯了致命错误。实际上我只是改变了它的CatName值。在ORM中,每个“值”都需要一个对象。意味着我们不能像上面那样使用同一个对象进行多个“对象分配”。所以实现我的目的的正确方法是:
const int *
另一个“错误”是使用objectManager进行实体实例化。我被告知要通过“new”构建它们,而不是使用objectManager“扩展”扩展。 所以我的最终解决方案是:
$categories = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\ObjectStorage');
$category1 = $this->objectManager->get('VENDX\Items\Domain\Model\Category'); //1st catobj
$category1->setCatName('Cat1'); //First category
$categories->attach($category1);
$category2 = $this->objectManager->get('VENDX\Items\Domain\Model\Category'); //2nd catobj
$category2->setCatName('Cat2'); //Second category
$categories->attach($category2);
$item->setCategories($categories);