首页 > 解决方案 > 使用 eloquent 逐一检索大量行

问题描述

我需要从 MySQL 数据库中检索大量行,我不能将它们全部加载到变量中,因为它太大了。有没有办法像使用雄辩的查询一样加载行 pdo?

$data = $pdo->query("SELECT * FROM users")->fetchAll();
foreach ($data as $row) {
    echo $row['name']."<br />\n";
}

我想使用 eloquent 查询生成器做同样的事情

标签: phplaraveleloquent

解决方案


使用分块结果chunk()是您的最佳选择。

DB::table('users')->chunk(100, function ($users) {
    foreach ($users as $user) {

        // process data

        return false; // break if needed
    }
});

使用 Eloquent 也可以达到同样的效果。

User::chunk(100, function ($users) {
    ...
}

文档


推荐阅读