是否可以在没有目标实体的情况下在 Doctrine2 中建立关联?
Posted
技术标签:
【中文标题】是否可以在没有目标实体的情况下在 Doctrine2 中建立关联?【英文标题】:Is it possible to establish an association in Doctrine2 without target entity at hand? 【发布时间】:2012-01-05 21:31:55 【问题描述】:在实体Pattern
和Category
之间定义了ManyToOne
关联(模式是关系的拥有方)。类别有很多模式,模式属于一个类别。所以有一个字段Pattern.category
带有@ManyToOne
Doctrine 注释。
现在,在我的场景中,我有我想要分配给新创建的 Pattern 的 Pattern.category 字段的 Category 实体(从表单发布)的 id(将被持久化),但是我不想加载这个 Category 实体——我不需要它,我只想创建一个 Pattern 实体,将它分配给一个 Category(我拥有的 id),然后持久化它。对我来说似乎很奇怪,我必须加载 Category 实体才能建立连接,而我真正需要的只是一个我已经拥有的 id。
也许它闻起来像在 ORM 中使用关系数据库概念,但是当我知道目标实体的 id 时,加载这个实体只是为了建立连接似乎完全没有意义。
顺便说一句,我是 Doctrine 的新手。
【问题讨论】:
【参考方案1】:你可以使用Reference Proxy:
$category = $em->getReference('Category', $id);
$pattern->setCategory($category);
【讨论】:
谢谢,这正是我一直在寻找的:“这很有用,例如,当您想要建立与您拥有标识符的实体的关联时,可以增强性能。” 文档 URL 已更改为 docs.doctrine-project.org/projects/doctrine-orm/en/latest/…以上是关于是否可以在没有目标实体的情况下在 Doctrine2 中建立关联?的主要内容,如果未能解决你的问题,请参考以下文章
如何在doctrine zend中没有实体的情况下继续加入查询构建器