我正在从excel加载数据。在foreach中,我检查每条记录是否存在于数据库中:
$recordExists = $this->checkIfExists($record);
function checkIfExists($record) {
$foundRecord = $this->repository->newQuery()
->where(..., $record[...])
->where(..., $record[...])
...
->get();
}
当excel包含最多1000个值,这是一个相对较小的数据 - 代码运行大约2分钟。我猜这是非常低效的方法。
我正在考虑将加载数据的数组传递给方法checkIfExists
,但后来我无法查询数据。
什么是进行的方式?
如果您想在很短的时间内完成大量工作,可以使用laravel队列。您的代码将在后端运行。客户无法识别该过程。只是向客户端显示此进程正在排队的消息。而已
您可以查看Url https://laravel.com/docs/5.8/queues下面的官方文档
如果将所有数据从数据库传递到函数(因此不再对数据库进行查询),则可以使用laravel collections函数进行过滤。
其中之一是qazxsw poi => qazxsw poi
where
其他有用的功能。