Rob*_*Rob 6 laravel eloquent laravel-4 laravel-5
我正在尝试使用随机slugs为每条记录更新一个包含slug值的表.
$vouchers = Voucher->get(); // assume 10K for example
foreach ($vouchers as $voucher) {
$q .= "UPDATE vouchers set slug = '" . Str::random(32) . "' WHERE id = " . $voucher->id . ";";
}
DB::statement($q);
Run Code Online (Sandbox Code Playgroud)
大约有200万条记录,因此我需要将其作为批量执行.单独记录这样做太长了.我似乎无法找到批量运行它们的方法,比如以10K或者其他类似的组.
尝试了一堆的变化->update()和DB::statement,但似乎无法得到它去.
如果有人像我一样登陆此页面,laravel 允许批量更新:
$affectedRows = Voucher::where('id', '=', $voucher->id)->update(array('slug' => Str::random(32)));
请参阅http://laravel.com/docs/4.2/eloquent#insert-update-delete下的“更新检索到的模型”
Ana*_*nam -1
对结果进行分块是执行此类操作的最佳方式,而无需消耗所有 RAM,并且 Laravel 支持开箱即用的分块结果。
例如:
优惠券::块(2000, 函数($优惠券)
{
foreach($优惠券作为$优惠券)
{
//
}
});
| 归档时间: |
|
| 查看次数: |
9298 次 |
| 最近记录: |