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

Laravel 4, PHPUnit and DB::getQueryLog() always empty

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

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

但是$查询总是returns一个空数组

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

});

$queries 仍然是空的。

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

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

这个答案对我有帮助:

[此处]

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

为 my_connection 启用查询日志:

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

获取 my_connection 的查询日志:

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

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