我遇到了一个问题,我只想加载大约5,000行,并且这个查询需要5-10秒的时间才能完成。这个应用程序在下个月将很快达到200 k行,所以您可以看到这是一个大问题的原因。
这是我的代码:
$leads = Lead::with(['vertical', 'website', 'source', 'agent', 'assign', 'assign.buyer', 'returns'])->get();
$datatable = datatables()->of($leads);
dd($datatable );它使用了Laravel插件,它简单地为查询- https://github.com/yajra/laravel-datatables增加了分页限制。
所有这些关系都正确地建立在模型中:
public function vertical()
{
return $this->belongsTo('App\Vertical');
}
public function website()
{
return $this->belongsTo('App\Website');
}
public function source()
{
return $this->belongsTo('App\Source');
}
public function agent()
{
return $this->belongsTo('App\Agent');
}
public function assign()
{
return $this->hasOne('App\Assign');
}
public function returns()
{
return $this->hasMany('App\AssignReturn');
}assign.buyer关系也在Assign模型中正确地设置。
当我在Lead表中只有大约5,000行时,为什么要花5-10秒来加载,而且它也是有限的呢?这是与Laravel相关的问题,是Laravel数据问题,还是我做错了什么?
发布于 2018-05-10 22:31:47
好吧我想明白了。删除->get()实际上允许数据包执行分页,而不是迭代每一个结果。
这就是导致缓慢的原因。
https://stackoverflow.com/questions/50282340
复制相似问题