В моем приложении я часто делаю доктринный запрос так:
$coms = Doctrine_Core::getTable('Comment')
->createQuery('c')
->join('c.article a')
->join('a.Writter w')
->where('w.something = ?', $something);
Я хочу извлечь комментарии из статей с условием на автора.
Запрос начинается с таблицы комментариев (потому что, наконец, нам нужна коллекция доктрин комментариев), затем я присоединяюсь ко всем статьям, а затем ко всем авторам. Наконец, я делаю ограничение с условием на авторов.
Этот запрос может быть более оптимизирован для соединений в следующем порядке:
$coms = Doctrine_Core::getTable('Writter')
->createQuery('w')
->select('c.*')
->join('w.Article a')
->join('a.Comments c')
->where('w.something= ?', $something);
Таким образом, количество линий, которыми манипулируют суставы, значительно уменьшено, потому что ограничение на писателя сначала выполняется.
Но с этим кодом я получил ошибку:
В корневом классе запроса (псевдоним w) должно быть выбрано хотя бы одно поле.
Существует ли решение сохранить этот порядок в суставах и получить, наконец, коллекцию доктрин Комментариев ?