雄辩的whereIn错误:1390已准备好的语句包含太多占位符laravel 5.7

时间:2018-11-30 08:59:24

标签: php laravel

我有一个简单的查询,如下所示:

$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?}在(?,?,?,?,....... ...

很多吗? ...

因此,我该如何解决此问题。谢谢。

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

中获得总数