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()
都需要指定连接名称
我有一个 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()
都需要指定连接名称