【问题标题】:Laravel Lumen - Eloquent Query LogLaravel Lumen - Eloquent 查询日志
【发布时间】: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 中查询是空白的?

【问题讨论】:

    标签: laravel lumen


    【解决方案1】:

    要让 Laravel Lumen 中的查询日志正常工作,您需要启用它:

    DB::connection()-&gt;enableQueryLog();

    您可以将该代码添加到您的控制器、中间件等中,然后使用:

    $queries    = DB::getQueryLog();
    $lastQuery = end($queries);
    
    dd($lastQuery)
    

    打印您的查询。

    您还可以将以下内容与 eloquent 一起使用:

    $myModel = Users::where('active', true);
    
    dd($myModel->getSql(), $myModel->getBindings());
    
    

    您必须先运行getSql()getBindings(),然后才能调用-&gt;first()-&gt;get()

    【讨论】:

    • 我使用的是 Lumen 5.7,上面的代码只记录喜欢的 df DB::select 等。不是雄辩的模型检索等 - 我希望它会。
    • @NigelAtkinson 你试过dd($eloquentQuery-&gt;toSql(), $eloquentQuery-&gt;getBindings());
    • 感谢ajtrichards,它们确实有效,但是我发现了问题所在。我有 LadaCache,它在 redis 中缓存雄辩的查询,并没有我想象的那么禁用。
    【解决方案2】:

    只需在查询后调用它以使其快速简单:

    echo $query->toSql();
    

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 2017-04-29
      • 2018-10-18
      • 2020-11-08
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多