我最近开始使用Symfony2-Doctrine2。我没有得到如何在inheritance mapping中保存数据。
我的要求:
学习练习:
为了快速可视化,我遵循以下结构:
我根据inheritance mapping&的学说文档实现了上述结构。 Bidirectional one to many relation
我的问题:如何使用Symfony2保存数据(我正确运行路由/操作,只需要在控制器中编写代码或在存储库中编写更好的代码)。在保存数据时(比如手动)我想在Item,Manual和ItemContect表中保存数据,但由于数据库中的discr
字段而感到困惑。我没有找到在上述结构中保存数据的代码。 我不需要完整的代码,只需要一些提示就足够了。我的Item类如下所示(其他类具有正确的反向,如doctrine docs中所述):
/**
* Article
*
* @ORM\Table(name="item")
* @ORM\Entity(repositoryClass="Test\LibraryBundle\Entity\ItemRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"book" = "Book", "manual" = "Manual", "article" = "Article"})
*/
class Item
{
//...
/**
* For joining with ItemContent
*
* @ORM\OneToMany(targetEntity="ItemContent", mappedBy="item")
**/
private $itemContents;
public function __construct()
{
$this->itemContents = new ArrayCollection();
}
//...
}
答案 0 :(得分:2)
鉴别符字段将由Doctrine
自动填充$em = $this->getDoctrine()->getManager();
$item = new Manual(); // discr field = "manual"
$itemContent = new ItemContent();
$item->addItemContent($itemContent);
$itemContent->setItem($item);
$em->persist($item);
$em->persist($itemContent);
$em->flush();
这是你正在等待的答案吗?