Я не говорю что это хорошо. Просто сказал как можно сделать чтобы работало то, что задумал пользователь.
А так бы посоветовал все переменные что нужны будут в шаблоне получать в контроллере и уже их передавать дальше в шаблон.
Во первых не обязательно писать на чистом DQL. Можно использовать QueryBuilder и получиться почти идентичный код, что приведен для Propel. Эти запросы так же не обязательно писать в репозитории. Если надо быстро то можно прям в контроллере и писать ;) Так же для приведенного примера есть метод getOneOrNullResult.
А я наоборот посоветовал бы симфони. Сам работаю на нем уже 3 года. А с выходом 2 версии вообще не нарадуюсь. Порог вхождения конечно не маленький, но зато потом понимаешь что все очень удобно и грамотно реализовано.
Using filesort по вашему это нормально? Вы не замечаете это потому что вы один раз запустили этот запрос, а на сервере могут одновременно 1000 пользователей это делать.
да вы что не надо делать 20 запросов… получаешь массив id сохраняем его к примеру в массив $sort_ids
потом делаешь запрос к базе с помощью IN… получаешь все записи с id которые вернул сфинкс и сохраняешь результаты в масив $data где у ключом элемента будет та же id
далее в шаблоне где это все надо вывести перебираем массив
foreach ($sort_ids as $id)
{
var_dump($data[$id]);
}
и выведется все в том же порядке в котором вернул сфинкс
ORDER BY FIELD плохо тем что он для этого создает временную таблицу… сделайте EXPLAIN и сами увидете… на маленьких таблицах этого можно и не заметить… но если таблицы с миллионами записей то начинаешь все это учитывать
ORDER BY FIELD лучше не использовать это тяжело для базы… проще просто перебрать потом вернувшийся отсортированный массив из сфинкса и просто выбирать по ИД выбранный элемент из базы… сортировка сохранится в итоге
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
А так бы посоветовал все переменные что нужны будут в шаблоне получать в контроллере и уже их передавать дальше в шаблон.