У меня проблема с методом LARvel 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, так что просто ДВАЖДЫ как первый пример кода.
Мой сценарий должен редактировать все соответствующие записи в базе данных. Если я запускаю его несколько раз, он просто раздаёт половину оставшихся записей каждый раз.
Я попытался использовать DB :: table() вместо Модели. Я попытался добавить -> take (20000), но он, похоже, не принимается во внимание. Я повторил запрос с помощью -> toSql(), и eveything кажется прекрасным (предложение LIMIT добавляется, когда я добавляю параметр -> take()).
Любые предложения?
Что такое $ this-> chunk output? – Dibesjr
Это целое число (т.е. 2000), я переименовал его в $ chunk_size, это не помогло. –
Не могли бы вы видеть, что такое выход или значение этой переменной? – Dibesjr