laravel块返回错误的数据

时间:2019-01-16 13:31:55

标签: laravel eloquent

  

我的问题是,根据我提供的块大小,块正在提供错误的数据。   有人可以给我一个合理的解释吗?

当我$chunk_by = 14时该块正在返回错误数据,但是当我使用$chunk_by = 100时;结果是正确的。

如果$chunk_by = 14,则以下代码的结果:

  

string(30)“索引:0显示商店:71360”
  string(30)“索引:1显示商店:71361”
  string(30)“索引:2个显示商店:71370”
  string(30)“索引:3个显示商店:71371”
  string(30)“索引:4个显示商店:72483”
  string(30)“索引:5个显示商店:72482”
  string(30)“索引:6个显示商店:73283”
  string(30)“索引:7个显示商店:73284”
  string(30)“索引:8个显示商店:73298”
  string(30)“索引:9个显示商店:73297”
  string(31)“索引:10个显示商店:74149”
  string(31)“索引:11个显示商店:74150”
  string(31)“索引:12个显示商店:75246”
  字符串(31)“索引:13个显示商店:78589”
  字符串(30)“索引:0显示商店:78589”
  string(30)“索引:1个显示商店:78740”
  string(30)“索引:2个显示商店:78739”
  string(30)“索引:3个显示商店:78943”
  string(30)“索引:4个显示商店:78944”
  string(30)“索引:5个显示商店:82702”
  string(30)“索引:6个显示商店:82701”
  string(30)“索引:7个显示商店:82875”
  string(30)“索引:8个显示商店:82876”
  string(30)“索引:9个显示商店:83549”
  string(31)“索引:10个显示商店:83548”
  string(31)“索引:11个显示商店:84017”
  string(31)“索引:12个显示商店:84016”
  字符串(31)“索引:13个显示商店:85766”
  字符串(30)“索引:0显示商店:85766”
  string(30)“索引:1个显示商店:86947”
  string(30)“索引:2个显示商店:86946”
  string(30)“索引:3个显示商店:87308”
  string(30)“索引:4个显示商店:87309”

请注意,索引0的新块的结果与该块之前具有相同ID的数据相同,请注意,它替换了应位于索引0上的那个...从而使您缺少数据并重复了数据!!!

但是,如果我们替换$chunk_by = 100

  

string(32)“索引:91个显示的存储区:131585”
  string(32)“索引:92显示的商店:131584”
  string(32)“索引:93显示商店:131644”
  string(32)“索引:94显示商店:131645”
  string(32)“索引:95显示商店:135388”
  string(32)“索引:96个显示商店:135387”
  string(32)“索引:97显示商店:135668”
  string(32)“索引:98显示商店:135667”
  字符串(32)“索引:99个显示商店:136738”
  字符串(31)“索引:0显示商店:136739”
  string(31)“索引:1显示商店:137207”
  string(31)“索引:2个显示商店:137208”
  string(31)“索引:3个显示商店:139294”
  string(31)“索引:4个显示商店:139295”
  string(31)“索引:5个显示商店:139492”

因此,索引0的新块的结果将获得新的商店电子钱包ID,即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);
   }
 });

0 个答案:

没有答案