Laravel Chunk возвращает неверные данные - PullRequest
0 голосов
/ 16 января 2019

Моя проблема в том, что чанк дает неверные данные в зависимости от размера чанка, который я предоставляю ... Может ли кто-нибудь дать мне логическое объяснение этому?

Когда я $chunk_by = 14чанк возвращает неверные данные но когда я использую $chunk_by = 100;результаты верны.

результаты приведенного ниже кода, если $chunk_by = 14:

string (30) "index: 0 отображает магазин: 71360"
string (30)"index: 1 отображает хранилище: 71361"
string (30) "index: 2 отображает хранилище: 71370"
string (30) "index: 3 отображает хранилище: 71371"
string (30) "index: 4 магазина: 72483 "
string (30)" индекс: 5 магазинов: 72482 "
string (30)" индекс: 6 магазинов: 73283 "
строка (30)" индекс: 7отображает хранилище: 73284 «
string (30)» index: 8 отображает хранилище: 73298 «
string (30)» index: 9 отображает хранилище: 73297 «
string (31)» index: 10 отображает хранилище: 74149 "
string (31)" index: 11 дисплеев хранилище: 74150 "
string (31)" index: 12 дисплеев хранилище: 75246 "
string (31)" index: 13 дисплеевstore: 78589 "
string (30)" index: 0 отображает store: 78589 "
string (30)" index: 1 отображает store: 78740 "
string (30) Индекс: 2 дисплея, магазин: 78739
string (30), индекс: 3 дисплеяstore: 78943 "
string (30)" index: 4 отображает store: 78944 "
string (30)" index: 5 отображает store: 82702 "
string (30)" index: 6 отображает store:82701 "
string (30)" index: 7 магазинов: 82875 "
string (30)" index: 8 магазинов: 82876 "
string (30)" index: 9 магазинов: 83549 "
string (31) "index: 10 дисплеев магазина: 83548"
string (31) "index: 11 дисплеев магазина: 84017"
string (31) "index: 12 дисплеев магазина: 84016"
string (31) "index: 13 отображает хранилище: 85766"
string (30) "index: 0 отображает store: 85766"
string (30) "index: 1 отображает хранилище: 86947 "
string (30)" index: 2 отображает хранилище: 86946 "
string (30)" index: 3 отображает хранилище: 87308 "
string (30)" index:4 отображает хранилище: 87309 "

замечает, что в результате нового фрагмента индекса 0 данные того же идентификатора блока и ранее, и замечает, что он заменяет тот, который должен быть в индексе 0... таким образом, оставляя вас с миссвместо этого используются данные и дубликаты !!!

Однако, если мы заменим $chunk_by = 100:

string (32) "index: 91 отобразит хранилище: 131585"
string (32) "index: 92 отображает хранилище: 131584"
string (32) "index: 93 отображает хранилище: 131644"
string (32) "index: 94 отображает хранилище: 131645"
string (32)"index: 95 отображает хранилище: 135388"
string (32) "index: 96 отображает хранилище: 135387"
string (32) "index: 97 отображает хранилище: 135668"
string (32) "index: 98 отображает хранилище: 135667 "
string (32)" index: 99 отображает хранилище: 136738 "
string (31)" index: 0 отображает хранилище: 136739 "
string (31) "index: 1 отображает хранилище: 137207"
string (31) "index: 2 отображает хранилище: 137208"
string (31) "index: 3 отображает хранилище: 139294"
string (31) "index: 4 отображает хранилище: 139295"
string (31) "index: 5 отображает хранилище: 139492"

Таким образом, результат нового фрагмента индекса 0получает новый идентификатор кошелька магазина 136739

$query = StoreWallet::selectRaw('store_wallets.*')->selectRaw('stores.ref as SN')->join('stores', 'stores.id', '=', 'store_wallets.store_id')->where('store_id', 106)->whereBetween('store_wallets.created_at', array('2018-01-01' , '2019-01-12'));

$chunk_by = 14; // 14 vs 100
$total = 0;

$query->chunk($chunk_by, function ($stores_wallets) use (&$total) {   
   // the following for each is for testing purposes; 
   // to check the results                                                                                                                           
   foreach($stores_wallets as $key => $store_w){
      // as you know ids are unique, shouldn't be duplicated
      var_dump('index: ' . $key . ' displays store: ' . $store_w->id);
   }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...