Доктрина: установка ассоциации с идентификатором вместо экземпляра объекта

можно ли установить ассоциации между двумя объектами, например article и comment, как это:

comment.setArticle(10) // 10 is the id of article

автоматически сгенерированные методы setArtcicle принимают в качестве аргумента объект Article, конечно, но, может быть, есть какие-то уловки для этого?

Для меня это очень важно с точки зрения производительности - я бы хотел избегать вызовов SQL всегда, когда я хочу установить связь. В моем случае таких ненужных запросов будет много.


person mkk    schedule 16.02.2012    source источник


Ответы (1)


Вы можете использовать:

$comment->setArticle($em->getReference('Article', 10));
person meze    schedule 16.02.2012
comment
не видел ни в одном подобном вопросе - извиняюсь! хотя спасибо за ответ! Будет принято как можно скорее - person mkk; 16.02.2012
comment
Проблема в том, что у меня нет экземпляра диспетчера сущностей (например, внутри сущности). Тогда требуется более сложное решение. - person Czechnology; 07.04.2015
comment
@Czechnology, это зависит от того, что вы хотите делать с другим лицом. Но я не думаю, что это сложно. - person meze; 07.04.2015
comment
@Czechnology Следует избегать использования диспетчера сущностей в сущности из-за принципа единой ответственности. - person Daniel; 07.09.2017
comment
Обратите внимание, что вам может потребоваться BundleName: Article - person Eric; 28.05.2019