脚本宝典收集整理的这篇文章主要介绍了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),并保持实体,
并让实体通过调用Entity :: getRelatedEntity()返回相关实体.
从严格限制的表中选择相关实体,并且它将永远不会在运行时动态增长,因此存在有限数量的相关实体id.
在创建新实体时,我想设置相关的实体ID,但不必从数据库中获取整个相关实体.
至于我可以测试它,它不起作用,因为如果我设置relatedEntityId但不设置relatedEntity,Doctrine会自动将related_entity_id列设置为null,因为基本上没有建立任何关系.
我也尝试过这样的事情:
Entity::setRelatedEntity(new RelatedEntity($relEntId))
RelatedEntity的构造函数将设置id,但不设置其他值.
我不想持久保存RelatedEntity(它的值已经在DB中为给定的$relEntId设置),但是这次Doctrine在flush时发出错误信号,因为它有一个未经存在的实体.
基本上,我想要做的是创建一个关系而不知道任何关联,但相关实体的Id.如果还有其他方法可以做到,请分享.
提前致谢
编辑:
我找到了一个解决方法.由于RelatedEntities将是一组有限的不可变对象,我已经完成了以下工作:
>使用entityManager查找所有RelatedEntities;
>将列表注入将创建新实体的对象
>创建新实体时,从列表中选择一个RelatedEntities作为其RelatedEntity
我会把问题保持开放一两天,以防万一有人提出更好的建议.
Entity::setRelatedEntity($entityManager->getReference('RelatedEntity',$relEntId))
以上是脚本宝典为你收集整理的php – Doctrine2 – 使用外键列作为普通字段全部内容,希望文章能够帮你解决php – Doctrine2 – 使用外键列作为普通字段所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。