Проблема с загрузкой отношений в Doctrine ORM - PullRequest
0 голосов
/ 10 апреля 2011

Я использую Doctrine ORM для PHP и у меня есть вопрос о загрузке отношений.Кажется, что модель загружает другой набор отношений в зависимости от того, как она была загружена, кто-нибудь знает способ обойти это?

Это может быть немного запутанным.Вот пример.Скажем, у нас есть модель A и модель B с отношением многих ко многим - у A есть один или несколько BВ моем наборе данных у меня есть одна запись A, «A1», которая связана с двумя записями B, «B1» и «B2».

Есть два способа загрузить запись A, но в обоихСценарии Я хочу иметь возможность получить все связанные записи B, используя $myModelA->B.

Первый сценарий - это прямая загрузка «А1».Так что я бы пошел $myModelA = A_Table->find("A1"), просто.Затем, когда я пойду $myModelA->B, я смогу увидеть как "B1", так и "B2".Это ожидается.

Второй сценарий вызывает проблемы.Я хочу найти все записи, связанные с "B2".Поэтому я создаю Doctrine_Query и выполняю соединение между A и B и указываю, что мне нужны записи A, связанные с "B2".Теперь я хочу просмотреть список записей А, одна из которых «А1».Так как у меня модель «А1» в $myModelA, такая же, как в первом сценарии, я ожидаю, что когда я уйду $myModelA->B, я смогу увидеть и «В1», и «В2».не тот случайЯ вижу только "B2".Я предполагаю, что это потому, что запрос, который я использовал для извлечения «А1», во-первых, требовал только записи, связанные с «В2», поэтому затем, когда я повторяю отношение назад, то как-то еще сохраняется условие, и я могу получить"B2".

Вопрос в том ... как заставить модель во втором сценарии игнорировать предыдущий запрос и загрузить все связанные записи в эту модель?

Спасибо!

1 Ответ

0 голосов
/ 11 апреля 2011

Я думаю, что вы можете вызвать refresh() для A. Убедитесь, что вы называете это с true в качестве аргумента, чтобы ваше отношение обновилось.

...