教条可以通过抽象类来建立关系

时间:2014-03-14 15:31:47

标签: doctrine-orm zend-framework2 abstract-class relationship

我使用了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")

1 个答案:

答案 0 :(得分:2)

您可以实现与超类的关系。

http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

继承有两种类型。单表和类表(hibernate中每个类的表)。查看类表继承