教义2协会

时间:2010-11-18 11:33:21

标签: doctrine-orm

我有2个Doctrine 2实体:   - 国家(身份证,姓名)   - Mapping(id,objectType,internalId,externalId)

我需要使用以下条件在Country和Mapping之间建立关联: Country.id = Mapping.internalId AND Mapping.objectType ='country'

我可以使用YAML / XML映射实现此关系吗?

2 个答案:

答案 0 :(得分:1)

Doctrine 2目前不支持此功能。关联的外键必须映射到主键,您无法在关联上实现过滤器。过滤器计划在2.1中实施。

答案 1 :(得分:1)

您可以通过Inheritance Mapping实现此目的;您的Country实体将是Mapping实体的子类。然后你可以这样加载一个国家:

$em->getRepository('entity\name\of\Country')->findBy(array('internalId' => 1));

仔细研究您对象的真正需求。我发现继承映射在某些情况下非常有效。您需要仔细考虑您的域名,看看是否属于这种情况。