Mapeamento de associação ManyToOne para uma entidade de herança de tabela de classe no Doctrine 2
eu tenho umAuthor
entidade, que é uma herança de tabela de classes contendo umAuthorUser
e umAuthorGroup
.
/**
* Author
*
* @ORM\Table
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"user" = "AuthorUser", "group" = "AuthorGroup"})
*/
class Author {
// ...
}
AuthorUser
relaciona-se com o meuUser
entidade eAuthorGroup
para o meuGroup
entidade.
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;
}
Eu não tenho ideia de como inverter isso. De qualquer forma, o problema é que eu tenho que adicionar este CTI ao meuArticle
campo da entidade. Como posso relacionar usando ManyToOne para este campo de entidade do artigo?
class Article
{
/**
* @var Author
*
* @ORM\ManyToOne(targetEntity="Author", inversedBy="?????????")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
}
Não tenho certeza de como tornar isso o mais transparente possível. Quando eu crio um novoArticle
, eu preciso fornecer umUser
ouGroup
objeto para oauthor
campo. Eu segui esse comportamento, mas não parece ajudar. Fica ainda mais complicado.