オブジェクトを他のオブジェクトのプロトタイプとして使用する際に問題があります。
以下のコードは、オブジェクト Container のすべてのインスタンスを永続化することが期待されています (以下のこのコードで表示されているのは $module1 と $module2 です)。ただし、永続化されるのは最後のインスタンスのみです。これは、プロトタイプ オブジェクトをコピーする方法によるものだと思います。
他の方法でプロトタイプをコピーする必要がありますか?
//Create module prototype
$module = new Container();
$module->setCompany($currentCompany);
$module->setContainerType($typeModule);
$module->setParent($entity);
//Set the modules in use by this template (structure a bit ugly here, but makes it easier when dealing with the layout on other areas of the app)
if ($size = $template->getModule1()) {
$module1 = $module; //copy the prototype
$module1->setName('Module1'); //Give a unique name
$module1->setContainerSize($size); //Copy the size from the layoutTemplate
$em->persist($module1); //Persist this module
$layout->setModule1($module1); //Connect this container to become a module in the layout
}
if ($size = $template->getModule2()) {
$module2 = $module; //copy the prototype
$module2->setName('Module2'); //Give a unique name
$module2->setContainerSize($size); //Copy the size from the layoutTemplate
$em->persist($module2); //Persist this module
$layout->setModule2($module2); //Connect this container to become a module in the layout
}