Hay ocasiones en las que necesitamos ver la consulta concreta que se va a ejecutar en Codeigniter antes incluso que esta se ejecute. Esto es casi imprescindible si necesitamos hacer depuración de nuestro código ¿Cuantas veces no hemos tenido errores en las consultas y hemos depurado a ciegas?.
Así, pensando rápido, otra funcionalidad que se me ocurre puede ser la de llevar un log de las consultas que se van ejecutando para controlar posibles anomalías en nuestro código.
La teoría: get_compiled_select
Para conseguir el objetivo que buscamos lo único que necesitamos es ejecutar get_compiled_select() después de la consulta que necesitemos. Este método permite obtener la consulta (en forma de cadena String) que se va a ejecutar sin llegarla a ejecutar o dicho de otra forma compila la query tal y como lo haría $this->db->get() pero sin llegar a ejecutarla.
Ejemplo
Después de todo, la teoría es eso teoría y para ilustrar lo que se puede conseguir nada mejor que un ejemplo sencillo:
1 2 |
$this->db->select("*")->from("factura")->join("linea_factura", "factura.id", "linea_factura.factura_id"); echo $this->db->get_compiled_select(); |
Después de ejecutar este código obtendremos la siguiente cadena:
1 |
SELECT * FROM `factura` JOIN `linea_factura` ON `factura`.`id` = `linea_factura`.`factura_id` |
Tan sencillo como eso y a la vez tan importante.