Laravel область объекта модели в цикле - PullRequest
0 голосов
/ 15 апреля 2020

Я знаю, что этот вопрос уже задавался здесь: Laravel Объем запроса в L oop

Но я не могу решить проблему.

    foreach ($activePortalProviders as $eachProvider) {
        $stockModel = new Stock();

        $response = array();
        $stockList = array();

        $portalProviderID = $eachProvider['portalProviderPID'];
        $getAllStocks = $stockModel->getAllStockBaseOnProviderID($portalProviderID)->select($selectedColumn)->get();

        if (count($getAllStocks) > 0) {

            foreach ($getAllStocks as $eachStock) {
                $gameModel = new Game();

                            //To find the game related to that particular stock and provider id
                $gameStatus = [1, 2]; // open/closed games should be listed
                $currentTimeStamp = microtimeToDateTime(getCurrentTimeStamp());
                $portalProviderPID = $eachStock['portalProviderPID'];
                DB::connection()->enableQueryLog();

                $queries = null;
                Log::debug('--before--'. microtimeToDateTime(getCurrentTimeStamp(), true));
                $gameData = $gameModel->getAllProviderGamesByStock($portalProviderPID, $eachStock['stockUUID'], $gameStatus, $currentTimeStamp);
                $queries = DB::getQueryLog();
                Log::debug($queries);
                Log::debug('--after--'. microtimeToDateTime(getCurrentTimeStamp(), true));

                //other code..........

                unset($gameModel);

            }
            //other code..........
        }
        unset($stockModel);
    } 

попытался создать отдельные объекты и сбросить их

попытался использовать (clone $gameModel)->getAllProviderGamesByStock(---Params--)

, но журнал запросов, который я получаю, продолжает добавлять старый запрос каждый раз, как:

[2020-04-15 12:03:46] local.DEBUG: --before--2020-04-15 12:03:46.2226  
[2020-04-15 12:03:46] local.DEBUG: array (
  0 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => '7b6c89f3-fcef-47b3-b4d4-ce550e0b56ed',
      3 => 1,
      4 => 2,
    ),
    'time' => 2.22,
  ),
)  
[2020-04-15 12:03:46] local.DEBUG: --after--2020-04-15 12:03:46.2403  
[2020-04-15 12:03:46] local.DEBUG: --before--2020-04-15 12:03:46.2412  
[2020-04-15 12:03:46] local.DEBUG: array (
  0 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => '7b6c89f3-fcef-47b3-b4d4-ce550e0b56ed',
      3 => 1,
      4 => 2,
    ),
    'time' => 2.22,
  ),
  1 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => 'ebac522c-24ae-4ba5-8bc9-1c32641ab08f',
      3 => 1,
      4 => 2,
    ),
    'time' => 1.83,
  ),
)  
[2020-04-15 12:03:46] local.DEBUG: --after--2020-04-15 12:03:46.2454  
[2020-04-15 12:03:46] local.DEBUG: --before--2020-04-15 12:03:46.2462  
[2020-04-15 12:03:46] local.DEBUG: array (
  0 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => '7b6c89f3-fcef-47b3-b4d4-ce550e0b56ed',
      3 => 1,
      4 => 2,
    ),
    'time' => 2.22,
  ),
  1 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => 'ebac522c-24ae-4ba5-8bc9-1c32641ab08f',
      3 => 1,
      4 => 2,
    ),
    'time' => 1.83,
  ),
  2 => 
  array (
    'query' => '---qry--',
    'bindings' => 
    array (
      0 => 'active',
      1 => 2,
      2 => '01fbd201-2837-4589-b60d-7321f319cd72',
      3 => 1,
      4 => 2,
    ),
    'time' => 1.82,
  ),
)  
[2020-04-15 12:03:46] local.DEBUG: --after--2020-04-15 12:03:46.2503  

и это продолжает расти.

Кто-нибудь еще сталкивается с подобной проблемой?

1 Ответ

0 голосов
/ 15 апреля 2020

Мне кажется, что ваш функциональный код в порядке, но то, как вы используете журнал запросов, вводит вас в заблуждение, потому что вы никогда не очищали журнал

Попробуйте очистить журнал запросов так:

...
$queries = DB::getQueryLog();
DB::flushQueryLog();
...
...