Home / Programmazione / PHP / Debug delle query con CodeIgniter
Mattepuffo

Debug delle query con CodeIgniter

Debug delle query con CodeIgniter

Prendiamo un model qualsiasi con una funzione che esegue una query:

public function getEntrate() {
        $this->db->select('*');
        $this->db->from('entrate');
        $this->db->join('causali', 'entrate.causale_id = causali.causale_id');
        $this->db->join('conti', 'entrate.conto_id = conti.conto_id');
        $this->db->join('utenti', 'entrate.utente_id = utenti.id');
        $this->db->order_by('entrata_data', 'desc');
        $this->db->limit(50);
        $query = $this->db->get();
        return $query->result();
    }

Questa funzione esegue una query che poi verrà richiamata nel controller e visualizzata nella view.

Se non ci sono errori di sintassi la query viene eseguita senza problemi; sennò viene visualizzata la query con l'errore.

Ma c'è il terzo caso: la query non ha errori però non rispecchia il comportamento che ci aspettavamo.

In questi casi ci servirebbe vedere comunque la query stampata sulla pagina per farne il debug.

Come fare?

Molto semplicmente nel controller facciamo così:

<?php

class Home extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('home_model');
    }

    public function index() {
            $data = array();
            $data['entrate'] = $this->home_model->getEntrate(); // RICHIAMO LA FUNZIONE
            $this->load->view('header', $data);
            $this->load->view('home_view', $data);
            $this->load->view('footer');
            echo $this->db->last_query();
    }

}

Nel costruttore richiamiamo il model.

Nella funzione impostiamo tutto quello che ci serve.

Poi carichiamo la varie view e infine stampiamo il risultato della funzione last_query della libreria db.

Vi conviene mettere quella riga sotto tutte le view caricate per una questione di visualizzazione della pagina, ma se potete metterla dove volete.