Доктрина 2 Ассоциация накладывает накладные расходы?
Картографирование ассоциаций в Учении 2
<?php
class User
{
//...
/**
* @ManyToMany(targetEntity="Group")
* @JoinTable(name="User_Group",
* joinColumns={@JoinColumn(name="User_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="Group_id", referencedColumnName="id")}
* )
*/
private $groups;
//...
}
В тесте, предполагая, что в этом примере $ groups инициализированы как ArrayCollection () в конструкторе, возвращает все группы, связанные с пользователем.
Программист из моей команды разработчиков хорошо рассказал об этом сценарии. Он загружает все группы, связанные с пользовательской сущностью, нам могут не понадобиться все из них.
При выполнении операторов соединения DQL, скажем, мы хотим выбрать избранные группы, достижимые объединениями DQL, мы присоединяемся к пользователю, группе и избранным. Doctrine снова запрашивает все группы? Это накладные расходы, на которые я пытаюсь указать, - это уже коллекция массивов всех групп.
Как мы контролируем результат от сопоставления ассоциации? Или, если мы удалим сопоставления сопоставлений, можем ли мы по-прежнему использовать DQL для объединения сущностей, для которых не настроены сопоставления сопоставлений? ИЛИ, действительно ли Doctrine использует данные сопоставления ассоциаций в DQL?