雄辩的块()缺少一半的结果
我对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;
它给出了124838的结果。
但:
$num_dest = Destinataire::where('statut', '<', 3)
->where('tokenized_at', '<', $date_active)
->count();
echo $num_dest;
给出了249676,所以只有TWICE作为第一个代码示例。
我的脚本应该编辑数据库中所有匹配的记录。如果我多次启动它,它每次只分发剩余记录的一半。
我尝试使用DB::table()而不是模型。我试图添加一个->take(20000),但它似乎没有被考虑在内。我用->toSql()回显了查询,并且所有内容似乎都很好(当我添加->take()参数时添加了LIMIT子句)。
有什么建议吗?