Mapowanie powiązań ManyToOne do jednostki dziedziczenia tabeli klas w Doctrine 2
mamAuthor
encja, która jest dziedziczeniem tabeli klas zawierającejAuthorUser
i anAuthorGroup
.
/**
* Author
*
* @ORM\Table
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"user" = "AuthorUser", "group" = "AuthorGroup"})
*/
class Author {
// ...
}
AuthorUser
odnosi się do mojegoUser
podmiot iAuthorGroup
do mojegoGroup
jednostka.
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;
}
Nie mam pojęcia, jak to odwrócić. W każdym razie problem polega na tym, że muszę dodać ten CTI do mojegoArticle
pole encji. Jak mogę powiązać używanie ManyToOne z tym polem encji artykułu?
class Article
{
/**
* @var Author
*
* @ORM\ManyToOne(targetEntity="Author", inversedBy="?????????")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
protected $author;
}
Nie wiem, jak uczynić to tak przejrzystym, jak to możliwe. Kiedy tworzę nowyArticle
, muszę podać alboUser
lubGroup
sprzeciwić sięauthor
pole. Podążałem za tym zachowaniem, ale wydaje się, że to nie pomaga. Robi się jeszcze bardziej skomplikowane.