代码之家  ›  专栏  ›  技术社区  ›  Yves Kipondo

全局范围在访问集合中的每个项目属性时添加额外的查询

  •  0
  • Yves Kipondo  · 技术社区  · 5 年前

    我有一个全局作用域,它附加了与主模型相关的模型的计数,当我尝试在视图中访问它时,它会执行另一个查询

    在主模型中,我添加了这样的全局作用域

    public static function boot()
    {
        parent::boot();
        static::addGlobalScope("reply_count", function(Builder $builder) {
            $builder->withCount('replies');
        });
    }
    
    public function replies()
    {
        return $this->hasMany(Reply::class);
    }
    

    当我试图访问 replies_count 在视图中,类似 $model->replies_count 它添加了另一个额外的查询。应用程序正在执行如此多的查询,以至于我已经循环了 $models

    执行了109条语句,其中106条重复,

    0 回复  |  直到 5 年前