在foreach中从数据库获取数据的有效方法

问题描述 投票:0回答:2

我正在从excel加载数据。在foreach中,我检查每条记录是否存在于数据库中:

$recordExists = $this->checkIfExists($record);

function checkIfExists($record) {
    $foundRecord = $this->repository->newQuery()
        ->where(..., $record[...])
        ->where(..., $record[...])
        ...
        ->get();
}

当excel包含最多1000个值,这是一个相对较小的数据 - 代码运行大约2分钟。我猜这是非常低效的方法。

我正在考虑将加载数据的数组传递给方法checkIfExists,但后来我无法查询数据。

什么是进行的方式?

laravel optimization laravel-5.1 query-builder
2个回答
0
投票

如果您想在很短的时间内完成大量工作,可以使用laravel队列。您的代码将在后端运行。客户无法识别该过程。只是向客户端显示此进程正在排队的消息。而已

您可以查看Url https://laravel.com/docs/5.8/queues下面的官方文档


0
投票

如果将所有数据从数据库传递到函数(因此不再对数据库进行查询),则可以使用laravel collections函数进行过滤。

其中之一是qazxsw poi => qazxsw poi

where

其他有用的功能。

  • 过滤
  • 包含
© www.soinside.com 2019 - 2024. All rights reserved.