/** @todo Acionar o AdSense e começar a ganhar milhões com o blog **/

Finalmente, foi superado o trauma do primeiro post, ainda agravado por uma mudança de ferramenta. Ainda estou tentando descobrir duas coisas: primeiro, um bom e agradável layout; segundo, saber exatamente o que colocar nesta caixinha de texto.

(…)

E eu continuo minha saga com o famigerado ORM do Cakephp. Na maioria das vezes, é só um inconveniente. Algumas, é realmente irritante.

Precisei fazer uma busca em uma tabela utilizando um valor que deveria ser buscado a 4 relacionamentos de distância. Até aí, nada demais, penso eu. No Rails, eu poderia utilizar uma cascata de :include e :through, dependendo do caso. Então eu creio que, no Cake, eu possa fazer simplesmente:

$this->ModelName->recursive = 4;
$this->ModelName->find('ModelDistante.field = ' . $value);

Certo? Claro que não. Após alguns minutos revirando o código, eu resolvo mudar o log para exibir as queries executadas. Para minha surpresa, apenas a primeira recursividade é utilizada na primeira query. Após isto, o Cake vai iterando pelo resultado e resgatando os dados relacionados aos demais níveis da recursividade. Bizarro.
A solução é criar a query (utilizando o método Model::query()) na mão, o que é um tanto ilógico já que se opta a utilizar um ORM para não precisar fazer o trabalho duro.
Ainda bem que foi a primeira vez em mais de um mês no projeto. No mais, o Cake tem se mostrado um framework razoavelmente bom. Tem várias limitações, claro. Espero que em versões futuras mudem o ORM.

Explore posts in the same categories: cakephp, devaneios

Comment: