Никогда не пробовал это лично (и у вас нет Doctrine2 на кончиках пальцев), но помечая ассоциацию как EAGER
, должно сработать. Hovewer, вы всегда будете загружать эти связанные объекты таким образом.
В качестве обходного пути попробуйте получить доступ к связанным объектам перед сериализацией. Например. если вы следовали совету инкапсулировать коллекцию связанных объектов (и вы действительно должны следовать ей), вы просто получаете к нему доступ с помощью $snippet->howDidYouCallFunctionThatReturnCollection()
. Doctrine перехватывает запрос на Collection
, проверяет, что он заполнен прокси, и загружает его автоматически. Итак, это должно быть что-то вроде:
class Snippet{
//other declarations
/** OneToMany(targetEntity='Blah', ...)*/
protected $associations;
public function getAssociations(){
return $this->associations; //fills proxies with real data here
}
}
public function getSnippet($id)
{
$snippet = $this->getEntityManager()->getRepository('GvnSnippetryBundle:Snippet')->findOneBy(array('id' => $id));
$snippet->getAssociations(); //gets only one association
$snippet->getAssociations2(); //and so on
return $snippet;
}
Обратите внимание, что это ни в коем случае не полный пример кода, но я предполагаю, что вы знаете, как отобразить ассоциации. В любом случае, просмотрите Работа с объектами и Сопоставление связей глав для более подробного описания и примеров кода.