设置Doctrine2实体属性,而无需检索整个关联对象



我有一个表对象,该对象有2个字段,即外键(user_id and thoce_id)。在生成X表的实体后,实体仅包含$ user和$ conters属性,这迫使我使用关联的对象而不是ID。因此,假设我知道我的对象的user_id and thoct_id,而不是这样做:

$object->setUserId(1)

我必须做:

$user = $this->getDoctrine()->getRepository('MyBundle:Users')->find(2);
$object->setUser($user)

是否没有办法直接使用ID来避免检索与每个ID关联的整个对象?

框架建议在设置关联值时使用对象。仍然 - 您确定记录还没有加载到内存中吗?如果是这样,它不会导致其他SQL语句执行。

如果您确实需要在不加载对象的情况下更新关联,则可以

  • 运行本机SQL;
  • 尝试手动创建学说代理对象并设置它。

您可以使用EntityManager方法getReference获取代理对象:

$object->setUser($this->getDoctrine()->getReference('MyBundle:Users', 2));

相关内容

  • 没有找到相关文章

最新更新