Я пытаюсь получить связанные объекты через 3 таблицы (пользователь, клиент, учетная запись). Пользователь имеет отношение «один ко многим» к клиенту, клиент имеет отношение «один ко многим» к учетной записи. Я легко извлечь все клиенты для одного конкретного пользователя, используя этот простой код:Doctrine, получающий косвенно связанные объекты
$user = $this->getUser();
$id = $user->getId();
$user = $this->getDoctrine()->getRepository('AcmeUserBundle:User')->find($id);
$clients = $user->getClients();
Кроме того, у меня нет проблемы с извлечением всех учетных записей для одного конкретного клиента, используя этот код:
$client = $this->getDoctrine()->getRepository('AcmeUserBundle:Client')->find($clientref);
$accounts = $client->getAccounts();
Теперь я хочу получать непосредственно все учетные записи, относящиеся к одному пользователю. Как мне это сделать? Я попытался следующие:
$user = $this->getUser();
$id = $user->getId();
$user = $this->getDoctrine()->getRepository('AcmeUserBundle:User')->find($id);
$client = $user->getClients();
$accounts = $client->getAccounts();
Но я получаю следующее сообщение об ошибке «Попытка вызвать метод„getAccounts“на классе„Учение \ ORM \ PersistentCollection“». Я считаю, что чего-то не хватает, потому что «Учетные записи» не могут быть ленивы загружены доктриной, когда я получаю пользователя, только «Клиенты». Каков наилучший способ достичь этого? Не могли бы вы привести пример кода, который будет работать (например, итерация или запрос DQL)? Спасибо.
Подсказка: $ clients = $ user-> getClients(); потому что getClients вернет массив. – Cerad