我在CodeIgniter3.1.1项目中使用Eloquent 5. *,一切正常,但我想检查处理请求时执行的查询,
经过一些谷歌搜索后,我遇到了Using Eloquent ORM inside CodeIgniter with added Query Logging并启用了CI Profiler,我看到了#34;没有执行查询",
我对Eloquent的database.php
配置如下所示
//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 */
提前感谢您的帮助
答案 0 :(得分:0)
要查看已执行的有说服力的查询,请使用类getQueryLog()
的{{1}}方法
简而言之
Illuminate\Database\Capsule\Manager;
类Illuminate\Database\Capsule\Manager
use Illuminate\Database\Capsule\Manager as Capsule;
方法查看在Eloquent ORM中执行的所有查询的数组