Doctrine orm 设置Doctrine2实体属性而不检索整个关联对象

Doctrine orm 设置Doctrine2实体属性而不检索整个关联对象,doctrine-orm,entities,Doctrine Orm,Entities,我有一个表对象,它有两个外键字段(user\u id和teacher\u id)。为X表生成实体后,实体仅包含$user和$teacher属性,这迫使我使用关联的对象而不是id。因此,假设我知道对象的用户id和教师id,而不是执行以下操作: $object->setUserId(1) 我必须做: $user = $this->getDoctrine()->getRepository('MyBundle:Users')->find(2); $object->setU

我有一个表对象,它有两个外键字段(user\u id和teacher\u id)。为X表生成实体后,实体仅包含$user和$teacher属性,这迫使我使用关联的对象而不是id。因此,假设我知道对象的用户id和教师id,而不是执行以下操作:

$object->setUserId(1)
我必须做:

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

是否无法直接使用id来避免检索与每个id关联的整个对象?

框架建议在设置关联值时使用对象。仍然–您确定该记录尚未加载到内存中吗?如果是,则不会导致额外的SQL语句执行

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

  • 运行原生SQL
  • 尝试手动创建Doctrine代理对象并进行设置
您可以使用
EntityManager
方法
getReference
获取代理对象:

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