[扩展推荐] Laravel Query Detector 数据模型查询的 N+1 问题捕杀神器 
                            
                                                    
                        
                    
                    
  
                    
                    
Marcel Pociot 开发的 Laravel Query Detector 组件用来检测 N+1 查询问题。应用运行于 debug 模式时,该组件将自动监测所有 N+1 查询。

在开发应用过程中,该组件将实时监测所有查询,并以 JavaScript alert() 的方式通知监测到的 N+1 查询。当然,你也可以修改配置文件,将报告发送到 Laravel 日志。
以下是默认配置,你可以直接使用或者覆盖配置项:
<?php
return [
    /*
     * 启用或关闭查询监测
     * 如果设置为 "null", 将使用 app.debug 配置值
     */
    'enabled' => env('QUERY_DETECTOR_ENABLED', null),
    /*
     * N + 1查询检测的阈值级别。如果关联查询超过此阀值,
     * 监测器将发出通知
     */
    'threshold' => 1,
    /*
     * 关联模型白名单
     *
     * 现在,你需要将模型关系定义为模型上的类名和属性名
     * 因此,如果 「Author」模型有一个指向「Post」类的「posts」关联,也需要添加进来
     * 「posts」属性和「Post」类,由于关系可以用多种途径解析
     */
    'except' => [
        //Author::class => [
        //    Post::class,
        //    'posts',
        //]
    ],
    /*
     * 定义输出形式,可用的有:
     *
     * Alert:
     * 页面展示一个 alert
     * \BeyondCode\QueryDetector\Outputs\Alert::class
     *
     * Log:
     * 将 N+1 查询写入 Laravel 日志文件
     * \BeyondCode\QueryDetector\Outputs\Log::class
     */
    'output' => \BeyondCode\QueryDetector\Outputs\Alert::class,
];
例如,如果你需要更新配置发送 N+1 问题到日志,可以按照如下配置:
'output' => \BeyondCode\QueryDetector\Outputs\Log::class
使用 composer 安装:
composer require beyondcode/laravel-query-detector --dev
值得注意的是,此配置文件将来可能发生改变,看起来这个版本在编写时像是预发布版本。
了解更多
你可以通过 GitHub 源码 了解更多关于此组件。
如果你不了解或需要复习 N+1 问题,我编写的 使用 Eager Loading 优化 Laravel Eloquent 查询 解释了 N+1 问题和使用 eager loading 如何优化应用,附加一个手动 N + 1查询实例演示并使用 eager loading 更新。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
           本帖已被设为精华帖!
        
       
           
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
                     
                     
            
 
                         
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: