是否有可能在学说中解决这个问题?我有一个名为评论的实体,此实体与另一个实体来电者作者有关系。关系由两列组成: author_id 和 author_type
/**
* @ORM\Entity
* @ORM\Table(name="comments")
*/
class Comment
{
/**
* @ORM\ManyToOne(targetEntity="Entities\Authors\Guest", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="author_id", referencedColumnName="author_id", nullable=FALSE),
* @ORM\JoinColumn(name="author_type", referencedColumnName="author_type", nullable=FALSE)
* })
**/
protected $author;
}
这种关系是因为作者可能是系统用户,访客,facebook用户等,每个用户都有自己的作者ID和作者类型(访客,系统,脸书等),所以作者实体看起来像这样: / p>
/**
* @ORM\Entity
* @ORM\Table(name="authors")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="author_type", type="string")
* @ORM\DiscriminatorMap({
* "guest" = "Guest",
* "system" = "System",
* "facebook" = "Facebook",
* "twitter" = "Twitter",
* "google" = "Google",
* "github" = "Github"
* })
*/
class Guest
{
}
要分隔每个作者类型,我使用单表继承。列 author_type 。作者表的主键是 author_id 和 author_type
当我加载评论实体时,它已成功加载作者,但问题是当我尝试创建新的评论实体并将其存储到数据库时。存储在注释表中的author_id是可以的,但即使将正确的作者实体添加到注释实体,author_type也始终是“guest”。
那么有可能解决这个问题吗?或者我应该使用不同类型的关系,添加额外的列等?