Я хотел бы отобразить список записей из интернационализированной таблицы, используя sfDoctrinePager.Не все записи были переведены на все языки, поддерживаемые приложением, поэтому мне пришлось реализовать механизм отката для некоторых полей (переопределив функцию getFoo () в Bar.class.php, как объяснено в другом посте здесь),У меня есть разные резервные списки для каждой культуры.Все работает нормально, пока не произойдет сортировка записей в алфавитном порядке.
Я сортирую записи на уровне SQL (Dql), добавив -> orderBy ('t.name') кquery:
$q = Doctrine::getTable('Foo')
->createQuery('f')
->leftJoin('f.Translation t')
->orderBy('t.name')
Но тут возникают проблемы: список сортируется неправильно, независимо от активной культуры.Я получаю несколько лучшие результаты, когда ограничиваю переводы активной культурой, например:
->leftJoin('f.Translation t WITH lang = ?', $request->getParameter('sf_culture');
Тогда сортировка верна, поскольку все переводы существуют для активной культуры.Если перевода не существует, и мне нужно взять имя из запасного языка, запись будет отображаться в самом начале списка (я так понимаю, это происходит потому, что значение для текущей культуры равно нулю).Мой вопрос: есть ли лучшая практика для правильной сортировки интернационализированных полей (нуждающихся в запасных версиях) с помощью doctrine и sfDoctrinePager?Заранее спасибо.