如何使用 Laravel 循环和插入基于页面的数据?

How can I looping and insert data based on pages using Laravel?

提问人:Kyuzzero 提问时间:8/14/2023 更新时间:8/14/2023 访问量:36

问:

我想在每个分页的数据库中执行插入操作,从第一页到最后一页,并在最后一页完成后完成。 但问题是,我尝试了这段代码,但它只循环了 5 个数据(根据第一个分页),连续不停地循环。

感谢任何解决我问题的人:)

public function __construct()
    {
        $this->data = new Data();
    }
    public function dumData()
    {
        $data = $this->data->paginate(5);
        return $data;
    }

    public function test()
    {
        $page = 1;

        do {
            $dataPaginated = $this->dumData($page);

            $data = $dataPaginated->items();

            foreach ($data as $result) {
                DB::table('test')->insert([
                    'name' => $result->name,
                    'data' => json_encode($result),
                    'created_at' => Carbon::now(),
                    'updated_at' => Carbon::now()
                ]);
            }

            $page++;

            $nextpage = $dataPaginated->nextPageUrl();
        } while ($nextpage);

        return 'success';
    }
php laravel 数据库 循环 do-while

评论


答:

0赞 Pippo 8/14/2023 #1

尝试像这样更改 dumData() 方法:

public function dumData($pageNumber)
{
    $data = $this->data->paginate(5, ['*'], 'page', $pageNumber);
    return $data;
}

还可以考虑使用来获取数据

1赞 Matthew Bradley 8/14/2023 #2

分页通常保留用于前端,以显示结果并提供转到下一页的链接。您在这里寻找的是块方法,它将拆分您的集合的每个结果。n

除了优化的方法外,您还希望遵循以下结构:

$chunks = $collection->chunk(5);
foreach ($chunks as $chunk) {
   foreach ($chunk as $item) {
       //Insert here
   }
}