Laravel 4:如何显示SQL查询?

时间:2014-06-21 07:05:27

标签: php logging laravel laravel-4 eloquent

在我的app / config / app.php文件中,我已打开'debug'=>true。 我试过了

//run eloquent functions
$allMessages = Messages::with('User')->whereIn('conv_id',$conv_id)->orderBy('created_at','aadesc')->take(10);

$q= DB::getQueryLog();
dd($q);

但它返回一个空数组。所以我认为按照建议做end($q)是没用的。

我还尝试了接受的answer to a question并将其添加到我的路径文件的末尾但没有任何反应。我还是Laravel的新手,需要一些指导。谢谢!

1 个答案:

答案 0 :(得分:2)

一种流行的方法是监视Eloquent事件,并输出在数据库中运行的任何查询:

Event::listen('illuminate.query', function($query, $params, $time, $conn) 
{ 
    dd(array($query, $params, $time, $conn));
});

$allMessages = Messages::with('User')->whereIn('conv_id',$conv_id)->orderBy('created_at','aadesc')->take(10);

这将输出正在运行的查询。

另一种选择是使用Laravel4 Debugger软件包,它会自动显示运行的查询:https://github.com/barryvdh/laravel-debugbar