Doctrine2继承映射 - 使用了错误的ID

时间:2015-08-05 21:52:38

标签: entity-framework symfony inheritance doctrine-orm doctrine

我现在有点问题。

使用CommentType和CommentId以及其他一些字段进行父实体评论。 还有一些不同的CommentEntites(如CommentText或CommentPhoto)扩展了父实体。

预期的行为应该是,Doctrine从Entity CommentText或CommentImage(取决于CommentType)加载带有ContentId的Data。 但目前它已经加载了来自父实体的ID。

父母实体:     

use Doctrine\ORM\Mapping as ORM;

/**
 * Comment
 *
 * @ORM\Table(name="comments")
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="comment_type", type="string")
 * @ORM\DiscriminatorMap( {"txt" = "CommentTxt", "img" = "CommentImg"} )
 */
abstract class Comment
{


/**
 * @var integer
 *
 * @ORM\Column(name="content_id", type="integer", nullable=true)
 */
private $contentId;

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

//and so on

其中一个儿童实体:

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
 * CommentTxt
 *
 * @ORM\Table(name="comment_text")
 * @ORM\Entity
 */
class CommentText extends Comment
{
/**
 * @var string
 *
 * @ORM\Column(name="content", type="text", length=65535, nullable=false)
 */
private $content;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="created_at", type="datetime", nullable=false)
 */
private $createdAt;

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

//and some more

我该如何改变这种行为?

迎接

0 个答案:

没有答案