Querys con JOINS en Joomla 1.5.25

Algunos de vosotros alucinareis un oco con el título de esta entrada del blog. ¿Porque habla de Joomla 1.25 en 2018?

Bueno pues alguno es posible que lo entienda perfectamente y es que si te toca desarrollar algo bajo esta plataforma y actualizar no es una opción debido al trabajo que ello implica, te toca apechugar y resolver las dificultades que te encuentres.

En relación a eso, me parace que es importante que cuando a uno le lleva más de 1 hora de su tiempo, averiguar algo, es importante, aunque pienses que no lo vas a volver a utilizar, guardarlo para tenerlo a mano. Y si además de guardarlo, puedes compartirlo para ayudar a los demás, mejor no?

La cuestión es que he tenido que desarrollar un script que , bajo Joomla 1.5.25, realizase una consulta al a base de datos de una manera un poco particular. Es importante remarcar la versión concreta de Joomla, pues en diferentes variantes de la rama 1.25 de Joomla se realizaron cambios que hacen que sus sentencias no funcionasen.

Bueno para empezar veamos como hacerlo de la forma más fácil pero menos potente. Podemos simplemente montar nuestra consulta como un string y listo y luego establecer la query:

No le hagais caso al nombre de las tablas, es simplemente un ejemplo de consulta. Como véis es muy fácil, pero entonces donde está el problema. Realmente no lo hay si tal como está la consulta te sirve. Pero quizás necesites ejecutar este script contra diferentes instalaciones de Joomla con diferentes bases de datos. Si es así habrías de cambiar cada uno de los archivos para cambiar el nombre de la bbdd.

Y ya sabes, no es mejor que el própio programa haga eso por tí? Afortunadamente Jooma posee el prefijo #__ para estos casos. Usándolo pegado al nombre de la tabla, Joomla automáticamente sustiruirá ese prefijo por el nombre de la BBDD que hayáis establecido en el archivo de connfiguración. Pero este prefijo, para que funcione, requiere que se use una instancia de LDatabaseQuery, veamos como rehacer el ejemplo de arriba conn JOINS usando este objeto:

Como se puede observar se ha creado un objeto $query que dispone de métodos como select, from, join, where y otros muchos que no hemos usado aquí. Mediante estos métodos vamos montando nuestra consulta.

Uno de los problemas que tuve, es que al buscar dcumentación al respecto, ha demás de ser escasa y obsoleta, se refería a una versión algo superior a la de la Instalación de Joomla sobre la que tenía que trabajar. Y en los ejemplos se usaba quoteName en vez de nameQuote lo que hacía que mi script no funcionase. Estos métodos sirver para entrecomillar el nombre de las tablas al igual que hace quote que añade comillas simples a valores que necesitan estar entrecomillados en las consultas.

Joomla dispone de más métosdos para usar sobre este objeto query como orderlimit, etc… Lo bueno de usar estos métodos es que podeis ir montando la consulta mientras váis obteniendo los campos que necessitéis, es decir, tal como está la consulta de arriba, es posible que os interese ordenar por algo, que esto además venga por parámetro y aun no lo tengáis. No pasa nada, cuando se tenga, se agrega a ese objeto con $query->order('....') y luego llamáis para obtener los resultados. Esto no sería posible con la query montada a pelo como la del primer ejemplo.

 

Bueno, espero que esto le ahorre tiempo a alguien, seguró que a mi me lo ahorrará…


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *