Код: Выделить всё
protected $rowCount = 0;
public function collection(Collection $rows): bool
{
foreach ($rows as $row)
{
// Insertions here
++$this->rowCount;
Log::debug('Inserted row #'.$this->rowCount);
}
return false;
}
public function chunkSize(): int
{
return 10;
}
Вот что выводит laravel.log:
[2020-07-13 10: 06:10] local.DEBUG: вставлена строка №1
[2020-07-13 10:06:11] local.DEBUG: вставлена строка №2
[2020] -07-13 10:06:11] local.DEBUG: вставлена строка № 3
[2020-07-13 10:06:11] local.DEBUG: вставлена строка № 4
[2020-07-13 10:06:11] local.DEBUG: Вставлена строка №5
[2020-07-13 10:06:12] local.DEBUG: Вставлена строка #6
[2020-07-13 10:06:12] local.DEBUG: вставлена строка #7
[2020-07-13 10:06:12] local.DEBUG: вставлена строка №8
[2020-07-13 10:06:12] local.DEBUG: вставлена строка №9
[2020-07-13 10:06:13] local.DEBUG: вставлена строка №10
[2020-07-13 10:06:16] local.DEBUG: вставлена строка №1
[2020-07-13 10:06:16] local.DEBUG: Вставлена строка №2
[2020-07-13 10:06:16] local.DEBUG: Вставлена строка №3
Я также пробовал использовать $rowCount по ссылке в замыкании
Код: Выделить всё
public function collection(Collection $rows): bool
{
$rowCount = 0;
foreach ($rows as $row)
{
// Insertions here
$counter = function() use(&$rowCount){
return ++$rowCount;
};
Log::debug('Inserted row #'.$counter->call($row));
}
return false;
}
Обновление: я попытался получить доступ к счетчику вне метода сбора -
Код: Выделить всё
protected $rowCount = 0;
public function collection(Collection $rows): bool
{
foreach ($rows as $row)
{
// Insertions here
$rowCount = $this->incrementCounter();
Log::debug('Inserted row #'.$rowCount);
}
return false;
}
protected function incrementCounter(){
return ++$this->rowCount;
}
public function chunkSize(): int
{
return 10;
}
Как сохранить значение $rowCount, чтобы оно не сбрасывалось обратно в 0 после каждого фрагмента?
ТИА!
Подробнее здесь: https://stackoverflow.com/questions/628 ... cel-import
Мобильная версия