我有一个简单的查询,如下所示:
$arp_terhadap_st_reg = Sfs::select('msisdn')->wherebetween('created', [$datefrom, $dateto])->where('cluster',$cluster)->pluck('msisdn');
$arp_outlet_reg = Arps::whereIn('msisdn',$arp_terhadap_st_reg)->count();
在这里,$ idList是一个数组,其中包含用户ID,我有超过60000个ID。
代码每次都告诉我:
"error":{"type":"Exception","message":"SQLSTATE[HY000]: General error: 1390 Prepared statement contains too many placeholders
SQL:从arps
中选择count(*)作为聚合,其中{?1?}在(?,?,?,?,....... ...
很多吗? ...
因此,我该如何解决此问题。谢谢。
答案 0 :(得分:2)
像下面一样使用array_chunk
$arp_terhadap_st_reg = Sfs::select('msisdn')->wherebetween('created', [$datefrom, $dateto])->where('cluster',$cluster)->get()->toArray();
$arp_outlet_count = 0;
foreach (array_chunk($arp_terhadap_st_reg, 1000) as $arp_terhadap_st) {
$arp_outlet_reg = Arps::whereIn('msisdn',$arp_terhadap_st)->count();
$arp_outlet_count = $arp_outlet_count + $arp_outlet_reg;
}
您将在$arp_outlet_count