我有2个Doctrine 2实体: - 国家(身份证,姓名) - Mapping(id,objectType,internalId,externalId)
我需要使用以下条件在Country和Mapping之间建立关联: Country.id = Mapping.internalId AND Mapping.objectType ='country'
我可以使用YAML / XML映射实现此关系吗?
答案 0 :(得分:1)
Doctrine 2目前不支持此功能。关联的外键必须映射到主键,您无法在关联上实现过滤器。过滤器计划在2.1中实施。
答案 1 :(得分:1)
您可以通过Inheritance Mapping实现此目的;您的Country实体将是Mapping实体的子类。然后你可以这样加载一个国家:
$em->getRepository('entity\name\of\Country')->findBy(array('internalId' => 1));
仔细研究您对象的真正需求。我发现继承映射在某些情况下非常有效。您需要仔细考虑您的域名,看看是否属于这种情况。