Laravel Lumen - Eloquent 查询日志
Posted
技术标签:
【中文标题】Laravel Lumen - Eloquent 查询日志【英文标题】:Laravel Lumen - Eloquent Query Log 【发布时间】:2015-10-20 16:13:33 【问题描述】:我正在使用 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 中查询是空白的?
【问题讨论】:
【参考方案1】:要让 Laravel Lumen 中的查询日志正常工作,您需要启用它:
DB::connection()->enableQueryLog();
您可以将该代码添加到您的控制器、中间件等中,然后使用:
$queries = DB::getQueryLog();
$lastQuery = end($queries);
dd($lastQuery)
打印您的查询。
您还可以将以下内容与 eloquent 一起使用:
$myModel = Users::where('active', true);
dd($myModel->getSql(), $myModel->getBindings());
您必须先运行getSql()
和getBindings()
,然后才能调用->first()
或->get()
等
【讨论】:
我使用的是 Lumen 5.7,上面的代码只记录喜欢的 df DB::select 等。不是雄辩的模型检索等 - 我希望它会。 @NigelAtkinson 你试过dd($eloquentQuery->toSql(), $eloquentQuery->getBindings());
感谢ajtrichards,它们确实有效,但是我发现了问题所在。我有 LadaCache,它在 redis 中缓存雄辩的查询,并没有我想象的那么禁用。【参考方案2】:
只需在查询后调用它以使其快速简单:
echo $query->toSql();
【讨论】:
以上是关于Laravel Lumen - Eloquent 查询日志的主要内容,如果未能解决你的问题,请参考以下文章
Lumen/Laravel Eloquent - 按数据透视表中的属性过滤
在 Laravel(流明)上使用 Mockery 模拟 Eloquent 模型不起作用