【问题标题】:Laravel Eloquent duplicate queryLaravel Eloquent 重复查询
【发布时间】:2016-05-12 22:17:13
【问题描述】:

我想对我所有的文章进行分页。每页 15 个。 这是分页的调用: Article::orderBy('created_at', 'desc')->paginate(15)

分页工作正常,但问题是 Laravel 在每篇文章上都会对我的用户表进行查询。每页 15 篇文章,对我的用户表的 15 个重复查询。 这是来自调试栏的图像: image source

如何优化分页并清除所有重复查询?

【问题讨论】:

  • 您在 User 和 Article 模型之间使用什么关系?
  • 在用户模型中我有public function articles() { return $this->hasMany(Article::class); },在文章中我有public function user() { return $this->belongsTo(User::class); }

标签: laravel pagination eloquent


【解决方案1】:

您在这些模型之间使用一对多关系,所以要解决这个问题(称为N+1 query problem),请使用eager loading

Article::orderBy('created_at', 'desc')->with('user')->paginate(15)

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 2017-10-22
    • 2015-12-06
    • 2021-11-16
    • 2014-08-18
    • 2021-12-26
    • 2015-02-22
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多