Laravel多对多关系分页,有20,000行

时间:2016-03-31 01:00:22

标签: php pagination eloquent laravel-5.2

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

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

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

注意:所有表都有索引。

1 个答案:

答案 0 :(得分:1)

我已经面对这几次了。

到目前为止,我所知道的唯一解决方案是在COMPLEX QUERY中不要使用ELOQUENT。

您必须更改为DB Query Builder。

我假设您在查询中使用“whereHas”。使用它会减慢你的查询速度。如果您使用它,请使用Join方法更改为DB Query。它会快得多。

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

但最近我听说他们已经在5.3中添加了这种关系功能。但我还没看清楚。

希望这可以解决问题。