Laravel Lumen - Eloquent 查询日志

7

我正在使用Laravel Lumen构建一个API。

我已经到达了需要找出Eloquent生成的SQL查询语句的时候。我知道如何在Laravel 4和Laravel 5中实现这一点,但是我尝试在Lumen中使用相同的代码,但查询结果为空?

$queries    = DB::getQueryLog();
$last_query = end($queries);

echo 'Query<pre>';
    print_r($last_query);
exit;

上述代码在Laravel中可以正常运行,但在Lumen中查询为空?
2个回答

9
为了让Laravel Lumen中的查询日志起作用,您需要启用它:

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

您可以将该代码添加到控制器、中间件等中,然后使用它。
$queries    = DB::getQueryLog();
$lastQuery = end($queries);

dd($lastQuery)

打印您的查询结果。

您也可以使用以下代码与Eloquent一起使用:

$myModel = Users::where('active', true);

dd($myModel->getSql(), $myModel->getBindings());

在调用->first()->get()等方法之前,必须先运行getSql()getBindings()


我正在使用Lumen 5.7,上面的代码只记录了喜欢的df DB :: select等内容,而没有期望中的Eloquent模型检索等。 - Nigel Atkinson
@NigelAtkinson 你试过 dd($eloquentQuery->toSql(), $eloquentQuery->getBindings()); 吗? - ajtrichards
1
谢谢ajtrichards,这些确实有用,但是我找出了问题。我有一个LadaCache,它在Redis中缓存优雅的查询没有完全禁用,就像我想象的那样。 - Nigel Atkinson

5

在查询之后,只需调用此函数即可使其保持快速和简单:

echo $query->toSql();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接