加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Doctrine2 – 使用外键列作为普通字段

发布时间:2020-12-13 17:19:31 所属栏目:PHP教程 来源:网络整理
导读:有没有办法在学说中有这样的东西: class Entity { /** * @Column(name="related_entity_id") */ private $relatedEntityId; /** * @ManyToOne(targetEntity="RelatedEntitiy") * @JoinColumn(name="related_entity_id",referencedColumnName="id") */ priva
有没有办法在学说中有这样的东西:

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,因为基本上没有建立任何关系.

我也尝试过这样的事情:

删除relatedEntityId属性,并使用

Entity::setRelatedEntity(new RelatedEntity($relEntId))

RelatedEntity的构造函数将设置id,但不设置其他值.
我不想持久保存RelatedEntity(它的值已经在DB中为给定的$relEntId设置),但是这次Doctrine在flush时发出错误信号,因为它有一个未经存在的实体.

基本上,我想要做的是创建一个关系而不知道任何关联,但相关实体的Id.如果还有其他方法可以做到,请分享.

提前致谢

编辑:

我找到了一个解决方法.由于RelatedEntities将是一组有限的不可变对象,我已经完成了以下工作:

>使用entityManager查找所有RelatedEntities;
>将列表注入将创建新实体的对象
>创建新实体时,从列表中选择一个RelatedEntities作为其RelatedEntity

我会把问题保持开放一两天,以防万一有人提出更好的建议.

解决方法

使用实体代理:

Entity::setRelatedEntity($entityManager->getReference('RelatedEntity',$relEntId))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读