Laravel DB Facade - 是否有可以获取的最大行数?

时间:2017-01-15 14:21:22

标签: laravel

生病时尝试使用Laravel:

    $bonuses = DB::connection('xxx_old')->table('RechnungBonus')->where('RechnungID','<=',10000)->get();

工作正常

    $bonuses = DB::connection('xxx_old')->table('RechnungBonus')->get();

返回null

旧数据库中有112000行 - 我需要将其迁移到新方案。是否有一个查询可以执行的最大行数?为什么它生病时不能正常工作?

1 个答案:

答案 0 :(得分:2)

没有技术限制,但是您的服务器可以轻松地最大化其RAM,试图一次性处理这么多行。 Laravel提供chunking来防止这种情况:

DB::connection('xxx_old')->table('RechnungBonus')->chunk(100, function ($bonuses) {
    foreach ($bonuses as $bonus) {
        //
    }
});

上面的代码将处理100个项目&#34; chunks&#34;中的表,以限制RAM的使用。挑选一个块大小取决于你 - 更大的块可能会更快一点,但让你更接近最大化RAM。