【问题标题】:Check how many queries are sent to DB while viewing a Blade in Laravel在 Laravel 中查看刀片时检查有多少查询发送到数据库
【发布时间】:2019-10-10 12:53:12
【问题描述】:

我有一个收藏。

$items = Item:where('count' , '>' , 5)->get();

我有一个 id 数组。

$ids = [2 , 4 , 7 , 8];

在我的 Laravel 刀片中,我想根据 ids 数组在 $items 上显示每个。我做了这样的事情:

@foreach($ids as $id)
    <a href="#">
        {{ $items->where('id' ,$id)->first()->name }}
    </a>
@endforeach

它运行良好。问题是,我向数据库发送了多少查询?以下是否正在运行新查询?

$items->where('id' ,$id)->first()->name

因为我已经get() 数据库中的项目。另一个问题是,如何在显示视图/刀片时找出有多少查询被发送到数据库?

【问题讨论】:

  • 你可以试试laravel-debugbar
  • 使用望远镜,查询选项卡,您将看到在页面加载时执行的每个查询。非常有用

标签: sql database laravel eloquent laravel-blade


【解决方案1】:

你可以使用流行的 Debug

https://github.com/barryvdh/laravel-debugbar

它非常简单和说明性!

【讨论】:

    【解决方案2】:

    在 laravel 中检查/调试页面上执行的所有查询:(下面的代码可以插入到根文件中)

    \Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
        var_dump($query->sql);
        var_dump($query->bindings);
        var_dump($query->time);
    });
    

    【讨论】:

    • 谢谢。我使用了这段代码并得到了数据库查询的时间。我有两个问题: 1- 是 $query->time 毫秒吗?另一个问题是我的数据库中有 500,000 条记录,使用分页加载查询时间需要 100 毫秒。可以吗?
    • 嗨 1. 是的,查询时间以毫秒为单位。 2. 这完全取决于获取的数据。 100 毫秒对我来说听起来不错!如果它对您有用,请接受该解决方案;)
    【解决方案3】:

    你可以在你的方法中监听数据库查询:

    $counter = 0;
    \DB::listen(function($sql) {
        $counter++; //increment for each query was run
    });
    

    Reference

    【讨论】:

      【解决方案4】:

      您始终可以检查网络选项卡并选择将显示每个请求的 XHR。 你也可以使用

      {{ $items->find($id)->name }}
      

      更流畅:P

      希望对你有帮助:D

      【讨论】:

        【解决方案5】:

        您已经从数据库中获取了您的项目,因此不会运行任何查询。您正在使用 Laravel 集合的 where() 函数,该函数根据您提供的键、值对进行过滤。 https://laravel.com/docs/5.8/collections#method-where

        【讨论】:

          【解决方案6】:

          它只得到一个查询,然后在get之后应用where()方法,在这种情况下只是原始项目的过滤器。

          另外,你可以安装一个 logger db 来检查查询在做什么,例如,Laravel Debugbar

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-12-15
            • 2021-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-28
            • 2019-07-28
            相关资源
            最近更新 更多