多对一关联映射到在学说2一类表继承实体(ManyToOne association mapping

2019-08-01 16:38发布

我有一个Author实体,它是含有一类表继承AuthorUserAuthorGroup

/**
 * 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实体领域。 我如何能与使用多对一本条实体领域?

class Article
{
    /**
     * @var Author
     *
     * @ORM\ManyToOne(targetEntity="Author", inversedBy="?????????")
     * @ORM\JoinColumn(name="author_id", referencedColumnName="id")
     */
    protected $author;
}

我不知道如何使这一尽可能透明。 当我创建一个新的Article ,我需要可以提供一个UserGroup对象的author字段。 我跟着这种行为,但它似乎并没有帮助。 它会变得更加复杂。

Answer 1:

一个解决办法是要始终有AuthorGroups,即使只有一个作者。

否则,看看https://github.com/FabienPennequin/DoctrineExtensions-Rateable

您可能能够使用该代码来提供类似的著作接口,可以在AuthorUser和AuthorGroup区分。



文章来源: ManyToOne association mapping to a Class Table Inheritance entity in Doctrine 2