php - Eloquent whereIn error:1390 Prepared statement contains too many placeholders laravel 5.7
问题描述
我有一个这样的简单查询:
$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: select count(*) as aggregate from arps
where msisdn
in (?, ?, ?, ?, ...................
许多 ?...
那么,我该如何解决这个问题。谢谢。
解决方案
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
推荐阅读
- hyperledger-fabric - 如何从 Hyperledger 作曲家中的资产中删除特定字段
- html - 在 svg 中实现 'Bowtie' 类型的文本
- r - 使用相同的日期字段列计算日期差异
- asp.net-mvc-5 - ASP.NET MVC 5 双重身份验证类型
- java - 使用 mvn post-clean install 比使用 mvn clean install 更好吗?
- html - CSS 相对位置 left 有效,但 top 无效
- javascript - 如何使用 pm2 每 5 秒运行一次 JS 脚本
- android - 为什么不能从字符串转换为int?
- angular - Angular从客户端避免CORS问题
- sql - 通过 DENSE_RANK() 在 partition by 和 order by 中使用相同的列