代码分享解决Laravel中MySQL WhereIn之too many placeholders技术
MySQL 执行的时候 WhereIn 太多的 ID 参数,导致 PDO 报错。解决方法,分批量执行,然后将结果合并。
下面以 range 函数做了一个简单的例子,计算 1 到 100 的加法。
public function cu(){ $arr = range(1, 100); $cl = function ($part_ids) { return array_sum($part_ids); }; $re = $this->portionExecute($cl, $arr); var_dump($re); $re = $this->portionExecute($cl, $arr, 10); var_dump($re); } public function portionExecute($closureJob, $dataArr, $portion_count = 1000){ $result = []; if(count($dataArr) > $portion_count) { for ($i = 0, $c = ceil(count($dataArr)/$portion_count); $i < $c; $i++){ $part_ids = array_slice($dataArr, $i*$portion_count, $portion_count); $result[] = $closureJob($part_ids); } } else { $result = $closureJob($dataArr); } return $result; }
相关文章
暂无