繁体   English   中英

Laravel with()慢

[英]Laravel with() slow

我遇到一个问题,我只希望以渴望的关系加载约5,000行,而查询要花5到10秒才能完成。 这个应用程序在下个月将迅速获得多达20万行的记录,因此您可以看到为什么这是一个大问题。

这是我的代码:

$leads = Lead::with(['vertical', 'website', 'source', 'agent', 'assign', 'assign.buyer', 'returns'])->get();
$datatable = datatables()->of($leads);
dd($datatable );

它使用Laravel Datatables插件,该插件仅向查询添加分页限制-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模型中正确设置assign.buyer关系。

Lead表中只有大约5,000行并且它也受到限制时,为什么要花5到10秒来加载? 这是与Laravel相关的问题,还是Laravel数据表问题,还是我做错了什么?

好的,我知道了。 删除->get()实际上允许datatables包执行分页,而不是遍历每个结果。

这就是造成缓慢的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM