簡體   English   中英

在foreach中從數據庫獲取數據的有效方法

[英]Effiecient way to get data from database in foreach

我正在從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函數進行過濾。

對他們的是where => https://laravel.com/docs/5.8/collections#method-where

function checkIfExists($record, Collection $fetchedDataFromDatabase) {

    // laravel collectons 'where' function
    $foundRecord = $fetchedDataFromDatabase
        ->where(..., $record[...])
        ->where(..., $record[...]);
}

其他有用的功能。

  • 過濾
  • 包含

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM