我有一个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);
});
仍然是$查询为空。
答案 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()
都需要指定连接名称