【问题标题】:Laravel Many to Many Relationship Pagination with 20,000 rowsLaravel 20,000 行的多对多关系分页
【发布时间】:2016-07-19 06:12:25
【问题描述】:

我有一个文章和类别表,还有一个数据透视表;我得到了一个类别中的所有相关文章。使用

$category = Category::first();
return $category->articles()->paginate(10); // many to many relationship $this->belongsToMany(Article::class, 'article_category');

它返回正确的文章,但是当一个类别中有超过 20000 篇文章时它会很慢。有什么方法可以让查询更快?

注意:所有表都有索引。

【问题讨论】:

  • 你找到答案了吗?很想知道如何解决这个问题
  • 很遗憾没有。我尝试创建自己的自定义分页,但仍然没有运气。 :(我真希望有英雄来救我。
  • 我的方法是获取用户的 ID,然后运行查询以获取他的所有帖子,例如

标签: php pagination eloquent laravel-5.2


【解决方案1】:

我已经遇到过很多次了。

到目前为止,我知道的唯一解决方案是不要在复杂查询中使用 ELOQUENT。

您必须更改为 DB Query Builder。

我假设您在查询中使用“whereHas”。使用它会大大降低您的查询速度。如果您确实使用它,请更改为 DB Query with Join 方法。会快很多。

唯一的问题是没有可以使用的关系,你已经在模型中声明了。您必须手动将其链接回来。

但最近我听说他们已经在 5.3 中添加了这个关系功能。但我还没有检查出来。

希望这能解决问题。

【讨论】:

    猜你喜欢
    • 2015-04-23
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2018-01-22
    • 2016-02-26
    相关资源
    最近更新 更多