Tag Archives: query

Adminer, una alternativa a phpMyAdmin

adminer, una alternativa a phpmyadmin

Hoy os haré un pequeño resumen de las principales ventajas de trabajar con Adminer, una alternativa a phpMyAdmin.Los desarrollos web que llevo a cabo, he tenido que traspasar multitud de bases de datos MySQL a entre servidores.Si os habéis tenido que encargar de esta tarea alguna vez con alguna base de datos que tenga un peso considerable, os habréis topado con los mismos problemas que me he topado yo: exceder el timeout mientras volcamos los datos, mientras exportamos, problemas de charset en las los valores de las tablas… todo esto son problemas inevitables en este tipo de tareas, pero con la herramienta adecuada, podemos paliar estos problemas cotidianos .

Principales ventajas de adminer

La primera ventaja con la que nos encontramos nada mas descargar, es que la aplicación tan solo consta de un fichero, cosa que agiliza el proceso de subida al servidor y gestión del mismo, además de tener un sistema de manejo de los datos similar a phpMyAdmin.

Otra de las ventajas es que, a pesar de ser un solo fichero, cuenta con la mayoría de funciones con las que cuenta phpMyAdmin para administrar bases de datos, pero también podemos encontrar para otros lenguajes SQL/NoSQL como MySQL, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch y MongoDB.

Importaciones/exportaciones de bases de datos con adminer

A nivel personal, me quede prendado del sistema de exportación que posee, ya que desde la misma página, puedes seleccionar que tablas y contenido de las mismas, pudiendo escoger entre varios formatos de salida, como por ejemplo un fichero gzip o sql. Esto puede ser muy útil si hay que importar una base de datos muy pesada y hay que importar por partes debido a problemas de timeout del servidor.

En tema de importaciones de datos, destaca el sistema por no ser necesario hacer directamente upload del fichero que necesitamos volcar, sino que lo podemos subir via FTP el fichero, renombrado como adminer.sql o adminer.sql.gz en el mismo directorio que tenemos que hemos subido adminer.php.De este modo, pondremos ejecutar el fichero sin necesidad de subirlo directamente en el mismo proceso, dejando más tiempo para el volcado del fichero.

Visitar web de adminer

1 Star2 Stars3 Stars4 Stars5 Stars (2 votos, media: 5,00 de 5)
Cargando…

Uso de la clase PrestashopCollection

La clase PrestashopCollection

Hoy vamos a ver el uso de la clase PrestashopCollection, ya que os puede ser de utilidad en más de una ocasión, cuando necesitéis, por ejemplo  retocar o consultar masivamente registros de una tabla MySQL de Prestashop, pero para ello necesitemos utilizar un método que hemos implementado en el ObjectModel que define los campos de dicha tabla, y que además, no podamos acceder a el sin instanciar el objeto por no ser estática.

Ejemplo de uso de la clase PrestashopCollection

Pongamos por ejemplo, que queremos obtener todos los transportistas(carriers) asignados a cada producto mediante el método de la clase Product getCarriers.Para ello, definiremos la query que obtendrá los registros que se cargarán dentro del array.Veamos el ejemplo:

 

 

Cómo podréis comprobar en el ejemplo, nos podemos ahorrar varias líneas de código, utilizando esta clase. Una alternativa a esta clase, puede ser el método estático hydrateCollection del objeto ObjectModel, ya que a pesar de tener que utilizar más lineas de código, es bastante más personalizable, ya que podemos montar las queries directamente sobre strings y son necesidad de llamar a métodos de la propia clases para montar nuestra query.De todos modos, sigo recomendando el uso de la clase PrestashopCollection por encima de hydrateCollection si la query que queremos montar para obtener el array de objetos no es excesivamente compleja.

Si utilizáis otros métodos para cargar object models en vuestros desarrollos en Prestashop, no dudéis en dejar en comentario.Espero que os sea de utilidad

1 Star2 Stars3 Stars4 Stars5 Stars (2 votos, media: 5,00 de 5)
Cargando…

La clase DbQuery de Prestashop

Logo de Prestashop

La clase DbQuery de Prestashop es una clase del propio core del CMS y utilizada para programar por los desarrolladores de Prestashop en algunas ocasiones para montar selects complejas por la variabilidad que puede llevar tener los campos y que quede montada de una forma más limpia en el código.

La clase DbQuery de Prestashop

Es una clase útil para poder montar queries sin tener que mantener el orden normal de las queries, es decir, que no necesitamos poner primero los campos de la select, el from después… , y de esta forma, no condicionar nuestro código con la estructura de las queries MySQL.

Los métodos de la clase DbQuery de Prestashop

Aquí os dejo un ejemplo con algunos de los métodos de esta clase:

Cómo podréis observar en el código no es necesario poner el prefijo de las tablas de Prestashop en las sentencias from y join.Por otro lado también es compatible con los alias de MySQL, ya sea para los campos de la select desde el mismo método, como los de las tablas mediante el segundo parámetro del método from o de la join.

Si necesitáis más información acerca de los métodos de esta clase podéis visitar la documentación que generé hace un tiempo de las clases y controllers de Prestashop que hace referencia a esta clase.

Para poder debugar la query que llevamos construida, podemos obtener el resultado mostrando la query por pantalla mediante el siguiente método.

d($sql->build());

Cómo ejecutar la query

A la hora de ejecutarla, podemos proceder como hacemos normalmente con cualquier query, ya que la clase Db soporta introducir la clase DbQuery de Prestashop en vez de ser una string construida por nosotros.Podemos utilizar ya sea el método executeS(), getRow(), getValue() o el resto de los métodos que utilizamos habitualmente en nuestras queries.

Si necesitáis más información sobre cómo ejecutar sentencias, os propongo que visitéis el artículo de Jose Aguilar que explica cómo trabajar con la clase Db.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, media: 4,00 de 5)
Cargando…

Copyright © 2017. Powered by WordPress & Romangie Theme.