1

エンティティがあります。これは、とAuthorを含むクラステーブル継承です。AuthorUserAuthorGroup

/**
 * Author
 *
 * @ORM\Table
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"user" = "AuthorUser", "group" = "AuthorGroup"})
 */
class Author {
    // ...
}

AuthorUserUser私の実体と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指定する必要があります。私はこの振る舞いに従いましたが、役に立たないようです。それはさらに複雑になります。UserGroupauthor

4

1 に答える 1