Как отлаживать красноречивые запросы, выполняемые в Codeigniter

Я использую Eloquent 5.* в моем проекте CodeIgniter3.1.1, все работает нормально, но я хочу проверить запросы, выполняемые при обработке запроса,

После некоторого поиска в Google я столкнулся с использованием Eloquent ORM внутри CodeIgniter с добавленным ведением журнала запросов и включенным профилировщиком CI. Я вижу "Запросы не выполняются",

мой database.php Конфигурация для Eloquent выглядит как ниже

//Eloquent ORM database connection

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
 'dsn' => 'mysql:host=localhost; dbname=communit_iwa_test charset=utf8;',
'host' => $db['default']['hostname'],
'database' => $db['default']['database'],
'username' => $db['default']['username'],
'password' => $db['default']['password'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => $db['default']['dbprefix'],
));
$capsule->setAsGlobal();  
$capsule->bootEloquent();


$events = new Illuminate\Events\Dispatcher;
$events->listen('illuminate.query',function($query, $bindings, $time,$name) {

// Format binding data for sql insertion

foreach ($bindings as $i => $binding) {
    if ($binding instanceof \DateTime) {
        $bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
    } else if (is_string($binding)) {
        $bindings[$i] = "'$binding'";
    }
}

// Insert bindings into query
$query = str_replace(array('%', '?'), array('%%', '%s'), $query);
$query = vsprintf($query, $bindings);

// Add it into CodeIgniter
$db = & get_instance()->db;
$db->query_times[] = $time;
$db->queries[] = $query;
});

$capsule->setEventDispatcher($events);
/* End of file database.php */
/* Location: ./application/config/database.php */

Ваша помощь ценится заранее

1 ответ

Для просмотра выполненных красноречивых запросов используйтеgetQueryLog() метод классаIlluminate\Database\Capsule\Manager;

короче

  1. Включают Illuminate\Database\Capsule\Manager класс в вашем контроллере или модели как use Illuminate\Database\Capsule\Manager as Capsule;
  2. использование Capsule::getQueryLog() метод для просмотра массива всех запросов, выполненных в Eloquent ORM
Другие вопросы по тегам