Diariamente eu trabalho com o framework symfony 1.1 usando como ORM o Doctrine, mas são muitas as decepções com o Doctrine. Ele não é um ORM que propícia um desenvolvimento ágil.
Hoje eu precisei fazer uma consulta retornando todos os registros da tabela e ordenando pelo nome, tentei usar o método findAll do Doctrine, mas ele não permite informar uma coluna para ordenação, ou seja, o básico do básico ele não faz muito bem. Onde fica o desenvolvimento ágil em tudo isso? :-( Precisei fazer uma gambiarra usando o método findByDql para conseguir realizar a minha consulta.
Eu pretendia fazer algo do tipo:
1 2 3 4 5 6 7 8 9 | $states = Doctrine::getTable('DState')->findAll()->orderBy('short'); ou $states = Doctrine::getTable('DState')->orderBy('short')->findAll(); ou $states = Doctrine::getTable('DState')->findAll(array('order' => 'short')); |
Nada disso funciona, o método findAll não consegue trabalhar com ordenação. Não vejo vantagens em usar esse método se não posso trabalhar com a ordenação dos resultados.
Tive que fazer a seguinte gambiarra usando o método findByDql para conseguir executar a consulta de forma mais prática e ágil:
1 | $states = Doctrine::getTable('DState')->findByDql('id is not null order by short'); |
Eu precisei criar um where que funciona para tudo e depois especificar a ordenação.

