阅读(3637) (8)

Laravel 8 使用游标

2021-07-07 10:18:50 更新

cursor 方法允许你使用游标遍历数据库,它只执行一次查询。处理大量的数据时, cursor 方法可以大大减少内存的使用量:

foreach (Flight::where('foo', 'bar')->cursor() as $flight) {
    //
} 

cursor 返回 Illuminate\Support\LazyCollection 实例。 Lazy collections 允许你使用 Laravel 集合中大多数集合方法,而且每次只会加载单个模型到内存中:

$users = App\Models\User::cursor()->filter(function ($user) {
    return $user->id > 500;
});

foreach ($users as $user) {
    echo $user->id;
}