2012-10-22 2 views
2

У меня есть таблица Object, которая имеет 2 поля, которые являются внешними ключами (user_id и teacher_id). После создания Entities для таблицы X сущность содержит только свойства $ user и $ teacher, что заставляет меня использовать связанные объекты вместо id. Так предположим, что я знаю, что user_id и teacher_id для моего объекта, а не делать:установить свойство объекта Doctrine2 без извлечения всего связанного объекта

$object->setUserId(1) 

я должен сделать:

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

не существует никакого способа напрямую работать с идентификаторами, чтобы избежать извлечения цельные объект, связанный с каждым идентификатором?

ответ

3

В рамке предлагается использовать объекты при настройке значения ассоциации. Тем не менее, вы уверены, что запись уже не загружена в память? Если это так, это не вызовет дополнительного выполнения SQL-запроса.

Если вам действительно нужно обновить ассоциацию без загрузки объекта, вы можете

  • запустить родную SQL;
  • попробуйте вручную создать объект Proxy Proxy и установить его вместо этого.

Вы можете получить прокси-объект с помощью метода EntityManagergetReference:

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