我有一个 Author
实体,它是包含 AuthorUser
和 AuthorGroup
的类表继承。
/**
* Author
*
* @ORMTable
* @ORMEntity
* @ORMInheritanceType("JOINED")
* @ORMDiscriminatorColumn(name="type", type="string")
* @ORMDiscriminatorMap({"user" = "AuthorUser", "group" = "AuthorGroup"})
*/
class Author {
// ...
}
AuthorUser
与我的User
实体有关,而AuthorGroup
与我的Group
实体有关。
class AuthorUser extends Author
{
/**
* @var User
*
* @ORMManyToOne(targetEntity="User", inversedBy="?????")
* @ORMJoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
}
class AuthorGroup extends Author
{
/**
* @var Group
*
* @ORMManyToOne(targetEntity="Group", inversedBy="?????")
* @ORMJoinColumn(name="group_id", referencedColumnName="id")
*/
protected $user;
}
我不知道如何倒数。无论如何,问题是我必须将此CTI添加到我的Article
Entity字段中。如何使用许多人与本文实体字段联系?
class Article
{
/**
* @var Author
*
* @ORMManyToOne(targetEntity="Author", inversedBy="?????????")
* @ORMJoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
}
我不确定如何使其尽可能透明。当我创建新的Article
时,我需要向author
字段提供User
或Group
对象。我遵循这种行为,但似乎没有帮助。它变得更加复杂。
一个解决方案可能是始终拥有授权组,即使只有一个作者。
否则,请看一下https://github.com/fabienpennequin/doctrineextensions-artable
您可能可以使用该代码来提供类似的作者接口,该接口可以区分作者和作者组。