我的问题是,根据我提供的块大小,块正在提供错误的数据。 有人可以给我一个合理的解释吗?
当我$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);
}
});