Получение необработанных SQL-запросов в CodeIgniter 1.7 - PullRequest
26 голосов
/ 02 октября 2009

Я пытаюсь отладить некоторый код в моем первом серьезном приложении CodeIgniter, и я не могу найти, где можно просто получить сырой SQL, который только что сгенерировал мой код ActiveRecord.

    $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();

Спасибо за помощь!

Ответы [ 5 ]

42 голосов
/ 13 июля 2011

Перед выполнением запроса:

$this->db->_compile_select(); 

И после того, как он запустится:

$this->db->last_query();
8 голосов
/ 04 октября 2009

Кроме того, вы можете поместить следующее в ваш контроллер:

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

Вы получите запросы и многое другое.

8 голосов
/ 02 октября 2009

Конечно, я нашел это через 2 минуты после публикации, любезно предоставлено Phil Sturgeon .

echo $this->db->last_query();
1 голос
/ 19 января 2016

Для любого, кто находит этот старый пост и интересуется, что это такое в последней версии v3, есть функция $ this-> db-> get_compiled_select ().

0 голосов
/ 13 марта 2012

Вы можете сделать что-то подобное, пока не выйдет следующая версия CI

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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...