2017-01-15 21 views
0

當生病嘗試與Laravel:Laravel DB Facade - 是否有可以提取的最大行數?

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

工作正常

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

返回null

有在舊的數據庫112000行 - 我需要將其遷移到一個新的方案。是否有一個可以由一個查詢執行的最大行數?爲什麼它生病時試圖獲得所有行不工作?

回答

2

沒有技術限制,但您的服務器可以輕鬆地將其內存最大化,試圖一次處理如此多的行。 Laravel提供chunking防止這種情況:

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

上面的代碼將你的表100項目的「塊」,以限制內存的使用。選擇一個塊大小取決於你 - 更大的塊可能會更快一些,但讓你更接近於最大化RAM。

+0

感謝您的回答。但是我的日誌裏沒有任何東西 - 通常我應該得到記憶警告,或者? – derdida

+0

@derdida如果內存用完了,是的。如果沒有,可能需要很長時間才能從數據庫中收集所有數據。當你進行分塊時,試着每隔100行打印一些內容到控制檯 - 看看它是否正常進行。 – ceejayoz

+0

再次感謝您的解釋! – derdida

相關問題