我有一个表对象,该对象有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));