我有一个Author
实体,它是一个包含AuthorUser
和AuthorGroup
的类表继承。
/**
* Author
*
* @ORM\Table
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"user" = "AuthorUser", "group" = "AuthorGroup"})
*/
class Author {
// ...
}
AuthorUser
与我的User
实体和AuthorGroup
与我的Group
实体相关。
class AuthorUser extends Author
{
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="?????")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
}
class AuthorGroup extends Author
{
/**
* @var Group
*
* @ORM\ManyToOne(targetEntity="Group", inversedBy="?????")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id")
*/
protected $user;
}
我不知道如何逆转这个。无论如何,问题是我必须将此CTI添加到我的Article
实体字段。如何使用ManyToOne与此Article实体字段相关联?
class Article
{
/**
* @var Author
*
* @ORM\ManyToOne(targetEntity="Author", inversedBy="?????????")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
}
我不确定如何让它尽可能透明。当我创建新的Article
时,我需要向User
字段提供Group
或author
个对象。我遵循了这种行为,但它似乎没有帮助。它变得更加复杂。
答案 0 :(得分:0)
一种解决方案可能是始终拥有AuthorGroups,即使只有一个作者。
否则,请查看https://github.com/FabienPennequin/DoctrineExtensions-Rateable
您可以使用该代码提供类似的Authored接口,该接口可以区分AuthorUser和AuthorGroup。