2

我对教义2很陌生。我需要建立这样的连接:

标签有一个(抽象)资源连接。(抽象)资源有标签。

我想根据代码动态键入实体资源的对象。所以通过这种方式,我可以将标签附加到任何实现给定接口的实体上。

我在教义中使用 Zend Framework 和注释 docblock 样式。

另一个例子是一个“消息”实体,它在系统中代表一条文本消息,它有一个作者和接收者关联,但我希望根据作者和接收者有不同的目标。例如,管理员实体向用户实体发送消息,或者用户实体向 VipUser 实体发送消息。

4

2 回答 2

2

听起来类表继承是解决这个问题的完美解决方案。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#class-table-inheritance

您基本上需要创建您的父类(标签)并为其每个子类提供一个鉴别器映射。所以例如..

/** 
 * @Entity 
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"tag" = "Tag", "message" = "Message", "otherentity" = "OtherEntity"})
 */
class Tag
{
   // tag properties / definitions etc
}

/** @Entity */
class Message extends Tag
{
   // Message specific stuff
}

您可以在您需要的任何其他实体上扩展您的“标签”实体。只要记住为它更新你的鉴别器映射值。

于 2012-05-11T08:55:05.257 回答
1

看看这个教义2扩展:

https://github.com/FabienPennequin/DoctrineExtensions-Taggable

我相信这会做你想要的。

于 2012-05-11T15:33:42.777 回答