Laravel 4,PHPUnit和DB :: getQueryLog()始终为空

时间:2015-02-27 18:58:39

标签: laravel-4 phpunit eloquent

我有一个phpunit测试,可以执行一些查询,然后:

$results = $thingy::where("finder_id", "=", "37");
$queries = DB::getQueryLog();
dd($queries);

但是$ queries总是返回一个空数组

Config :: get('app.debug')为真。

我试过了:

DB::enableQueryLog() 
DB::connection()->enableQueryLog()
没有运气。我也尝试过各种各样的事件监听器:

Event::listen("illuminate.query", function($query, $bindings, $time, $name){
    \Log::sql($query."\n");
    \Log::sql(json_encode($bindings)."\n");
});

还有什么可能导致这个?

编辑:为了消除PHPUnit的原因,我设置了一个具有已知工作模型的测试路线

Route::get('fndr',function() {
    $customer = new Customer;
    $results = $customer->first();
    var_dump($results->NAME);
    $queries = DB::getQueryLog();
    dd($queries);

});

仍然是$查询为空。

2 个答案:

答案 0 :(得分:0)

看起来我需要指定要使用的连接的名称。我假设它使用默认连接。

$queries = DB::connection('name_of_connection')->getQueryLog();
dd($queries);

答案 1 :(得分:0)

这个答案帮助了我

[这里] How to get the query executed in Laravel 5 ? DB::getQueryLog returning empty array

一些技巧1多个数据库连接 如果您有多个数据库连接,则必须指定要记录的连接

要启用my_connection的查询日志:

DB::connection('my_connection')->enableQueryLog();

获取my_connection的查询日志:

print_r(
   DB::connection('my_connection')->getQueryLog()
);

enbleQueryLog()getQueryLog()都需要指定连接名称