web-dev-qa-db-fra.com

Requête d'écho avant exécution et sans exécution dans codeigniter Active Record

Je cherche un moyen de voir la chaîne générée de la requête mais sans l'exécutant.

Notez que la requête n'a pas été exécutée auparavant. (Je ne veux pas $this->db->last_query();)

J'espère qu'une méthode portant un nom tel que $this->db->echo_query_string($table_name = ''); sera utilisée exactement comme $this->db->get($table_name = ''); MAIS LA SEULE DIFFÉRENCE SERAIT QUE get() exécute le code, mais echo_query_string() répète simplement la chaîne de requête sans exécution .

22
Mohammad Naji

Vous pouvez voir la requête compilée par l'une de ces fonctions

/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();
25
Stewie

J'ai ajouté cette petite méthode dans DB_active_rec.php

function return_query()
{
    return $this->_compile_select();
}

Usage 

$this->db->select('id,user_name')->from('user')->where('id',1);

$string =   $this->db->return_query();
echo $string;

Résultat

SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1

De cette façon, vous êtes obligé d'utiliser 

$this->db->from()

Au lieu de 

$this->db->get()

Qui exécute la requête

10
Muhammad Raheel

Vous pouvez utiliser certaines méthodes public pour obtenir des requêtes SQL

Obtenir une requête SELECT

$sql = $this->db->get_compiled_select()

Obtenir une requête INSERT

$sql = $this->db->get_compiled_insert()

Obtenir une requête UPDATE

$sql = $this->db->get_compiled_update()

Obtenir une requête DELETE

$sql = $this->db->get_compiled_delete()
0
jedema