我有一个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实体中加入它,还是我必须在服务中这样做?
答案 0 :(得分:0)
这可以由教义通过使用discriminator map功能来处理。在您的情况下,将从基本AdminFiles
实体继承的多个实体,每个实体都特定于一种类型的文件(例如PageFiles
,NewsFiles
等)。您将需要在entity
列与这些实体之间建立映射到@DiscriminatorMap
批注中,然后您将能够通过获取(或在关联映射中使用)表示某些实体的实体来仅获取一种特定类型的文件。特定类型的文件。
使用此功能,您甚至还可以具有特定于某些特定文件类型的实体属性。