Estoy tratando de depurar el código en mi primera seria CodeIgniter app y me parece que no puede encontrar donde puedo conseguir el raw SQL que mi ActiveRecord código generado.

    $where  = 'DAY(`datetime_start`) = '. date('d',$day) .' AND ';
    $where .= 'MONTH(`datetime_start`) = '. date('m',$day) .'';

    $this->db->from('events')->where($where);
    $result = $this->db->get();

Gracias por la ayuda!

InformationsquelleAutor bkorte | 2009-10-02

5 Comentarios

  1. 43

    Antes de la consulta se ejecuta:

    $this->db->_compile_select(); 

    Y después de que se ejecute:

    $this->db->last_query();
    • _compile_select() es marcado como protegidas en las versiones más recientes de CodeIgniter (es probable que solo no protegidas declaradas antes de PHP4 de compatibilidad). Por lo que sólo puede establecer el límite a 1 a evitar la ejecución de un grande de la consulta y, a continuación, llamar a last_query(), o puede utilizar la reflexión, pero la primera opción es preferible.
    • También Se ve como get_compiled_select() estará disponible en una futura versión de CodeIgniter; ya en la rama de dev (github.com/EllisLab/CodeIgniter/blob/develop/system/database/…). He copiado ese método para DB_active_rec y funcionó bien, incluso en conjunción con esta biblioteca: github.com/NTICompass/CodeIgniter-Subqueries
  2. 8

    También, usted puede poner lo siguiente en el controlador:

    $this->output->enable_profiler(TRUE);

    Obtendrá consultas y mucho más.

  3. 1

    Para cualquier persona encontrar este antiguo post y preguntándose qué esto es en la versión más reciente v3 la función $this->db->get_compiled_select().

  4. -2

    Puedes hacer algo como esto, hasta CI próxima versión

    private function get_query_string()
    {
        return  'SELECT ' . 
                implode( ' , ' , $this->db->ar_select ) .
                ' FROM ' .
                implode( ' , '  , $this->db->ar_from ) .
                ( count( $this->db->ar_where ) ? ' WHERE ' : '' ) .
                implode( ' ' , $this->db->ar_where );
    }
    • Esto es muy raro para producir resultados precisos en cuanto a lo de la consulta realmente está siendo ejecutado

Dejar respuesta

Please enter your comment!
Please enter your name here