php – Doctrine2 – 使用外键列作为普通字段
有没有办法在学说中有这样的东西:
class Entity { /** * @Column(name="related_entity_id") */ private $relatedEntityId; /** * @ManyToOne(targetEntity="RelatedEntitiy") * @JoinColumn(name="related_entity_id",referencedColumnName="id") */ private $relatedEntity; } 我想做什么我做这样的事情: 调用Entity :: setRelatedEntityId($someId),并保持实体, 从严格限制的表中选择相关实体,并且它将永远不会在运行时动态增长,因此存在有限数量的相关实体id. 在创建新实体时,我想设置相关的实体ID,但不必从数据库中获取整个相关实体. 至于我可以测试它,它不起作用,因为如果我设置relatedEntityId但不设置relatedEntity,Doctrine会自动将related_entity_id列设置为null,因为基本上没有建立任何关系. 我也尝试过这样的事情: 删除relatedEntityId属性,并使用 Entity::setRelatedEntity(new RelatedEntity($relEntId)) RelatedEntity的构造函数将设置id,但不设置其他值. 基本上,我想要做的是创建一个关系而不知道任何关联,但相关实体的Id.如果还有其他方法可以做到,请分享. 提前致谢 编辑: 我找到了一个解决方法.由于RelatedEntities将是一组有限的不可变对象,我已经完成了以下工作: >使用entityManager查找所有RelatedEntities; 我会把问题保持开放一两天,以防万一有人提出更好的建议. 解决方法
使用实体代理:
Entity::setRelatedEntity($entityManager->getReference('RelatedEntity',$relEntId)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |