如何在Laravel中获取大量记录

时间:2017-11-20 10:19:50

标签: php sql laravel

我正在使用laravel模型从数据库中获取记录。这次我只得到100-1000行,但如果它超过10万,那么我想避免内存不足异常。我怎么能得到这块?

我的代码

$getPatients = Patient::select('NameFirst', 'NameLast' , 'Email')->where([['MarketingOpt' , '=', '1'], ['synced' ,'=' , '0']])->get(); 

2 个答案:

答案 0 :(得分:3)

要获取// paginate中的数字是您要返回的结果数

$getPatients = Patient::select('NameFirst', 'NameLast' , 'Email')->where([['MarketingOpt' , '=', '1'], ['synced' ,'=' , '0']])->paginate(100);

显示

<div class="container">
  @foreach ($getPatients as $patient)
    {{ $patient->name }}
  @endforeach
</div>
{{ $getPatients->links() }} // this displays the previous and next links

请注意,这适用于Laravel 5.5

Laravel Pagination

答案 1 :(得分:2)

您应该使用分块Laravel Queries: Chunking results

文档仅指DB::table('...')->chunk(),但这也适用于Eloquent模型。

Patient::select('NameFirst', 'NameLast' , 'Email')
        ->where([['MarketingOpt' , '=', '1'], ['synced' ,'=' , '0']])
        ->chunk(100, function ($patients) {
    foreach($patients as $patient) {
        // do whatever you must do here
    }
});