我对Laravel的ORM Eloquent chunk()方法有疑问.它错过了一些结果.这是一个测试查询:
$destinataires = Destinataire::where('statut', '<', 3)
->where('tokenized_at', '<', $date_active)
->chunk($this->chunk, function ($destinataires) {
foreach($destinataires as $destinataire) {
$this->i++;
}
}
echo $this->i;
Run Code Online (Sandbox Code Playgroud)
它给出124838结果.
但是:
$num_dest = Destinataire::where('statut', '<', 3)
->where('tokenized_at', '<', $date_active)
->count();
echo $num_dest;
Run Code Online (Sandbox Code Playgroud)
得到249676,所以只有TWICE作为第一个代码示例.
我的脚本应该编辑数据库中的所有匹配记录.如果我多次启动它,它每次只分发剩余记录的一半.
我尝试使用DB :: table()而不是Model.我试图添加 - > take(20000),但似乎没有考虑到.我用 - > toSql()回显了查询,并且eveything似乎没问题(当我添加 - > take()参数时添加了LIMIT子句).
有什么建议 ?