我使用了ZF2,Doctrine
我有几个实体扩展了基础抽象类。 抽象类中的一个字段与其他实体 - 消息有关系 我的实体:
class AbstractChat
{
............
/** ONE-TO-MANY BIDIRECTIONAL, INVERSE SIDE
* @ORM\OneToMany(targetEntity="Chat\Entity\Message", mappedBy="chat")
*/
protected $messages;
}
class Chat extends AbstractChat
{
}
class ChatBuilding extends AbstractChat
{
}
class Message
{
/**
* @var \Chat\Entity\Chat
*
* @ORM\ManyToOne(targetEntity="Chat\Entity\AbstractChat", inversedBy="messages")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="chat_id", referencedColumnName="id")
* })
*/
private $chat;
}
如何声明该关系适用于扩展AbstractChat
类的所有实体?
这个意思不起作用:
@ORM\ManyToOne(targetEntity="Chat\Entity\AbstractChat", inversedBy="messages")
答案 0 :(得分:2)
您可以实现与超类的关系。
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html
继承有两种类型。单表和类表(hibernate中每个类的表)。查看类表继承