我在数据库中有40k条目,我试图在laravel中使用简单的fetch来调用它们。
$domains = Domain::where("available", 1)->limit(1000)->get();
return view('domains')
->with("domains", $domains);
这可以很好地工作几千行。但如果我没有对通话设置限制,我会收到500错误。我无法理解为什么,我无法找到我想要发现如何避免这个问题的地方,我似乎无法在apache日志中找到任何内容,或者laravel自己的日志位于存储中。
答案 0 :(得分:7)
您可以通过利用->chunk
命令来避免此问题。
Domain::where('available', 1)->chunk(200, function($domain){
//do whatever you would normally be doing with the rows you receive
// $domain stuff
});
chunk
命令的目的是在模型的每次X
次迭代后释放内存。在这种情况下,我已经显示了200。
Sidenote - 由于chunk方法使用Closure
作为第二个参数,请确保use($your_varaibles);