Отображение связи ManyToOne с сущностью наследования таблиц классов в Doctrine 2

у меня есть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 поле. Я следовал за этим поведением, но это, кажется, не помогает. Это становится еще сложнее.

Ответы на вопрос(1)

даже если есть только один автор.

В противном случае, посмотрите наhttps://github.com/FabienPennequin/DoctrineExtensions-Rateable

Возможно, вы сможете использовать этот код для обеспечения аналогичного авторского интерфейса, который может различать AuthorUser и AuthorGroup.

Ваш ответ на вопрос