Doctrine2中的实体关系标准

时间:2018-08-15 07:15:48

标签: database doctrine-orm entity-relationship

我有一个AdminFiles实体,该实体保存所有项目实体(新闻,页面,事件等)的文件。它的结构(删节)是这样的:

id          int(11) Auto Increment   
entity      varchar(255) // this holds the entity name, e.g. Page or News
entity_id   int(11) NULL // this holds the entity ID
filename    varchar(1000) // this holds the path to the file

我希望使用$ entity-> getFiles()之类的东西来访问实体(页面,新闻等)中的文件。但是我在创建关系时遇到了麻烦,因为它不仅受ID约束,而且还受实体名称约束。有什么方法可以在Doctrine2实体中加入它,还是我必须在服务中这样做?

1 个答案:

答案 0 :(得分:0)

这可以由教义通过使用discriminator map功能来处理。在您的情况下,将从基本AdminFiles实体继承的多个实体,每个实体都特定于一种类型的文件(例如PageFilesNewsFiles等)。您将需要在entity列与这些实体之间建立映射到@DiscriminatorMap批注中,然后您将能够通过获取(或在关联映射中使用)表示某些实体的实体来仅获取一种特定类型的文件。特定类型的文件。

使用此功能,您甚至还可以具有特定于某些特定文件类型的实体属性。