Столкнулся с проблемой, не все записи импортирует.
При импорте я выполняю много разных манипуляций внутри цикла и все они успешно проходят, но есть один столбец из за которого возникают проблемы.
Ситуация такая, в импортируемой таблице есть столбец у которого:
- тип
tinyint(3)
- Null -
Нет
- По умолчанию -
0
Данные из столба в новую таблицу попадают в ячейку published
(опубликована статья или нет) у которого:
- Тип -
tinyint(1)
- Null -
Нет
- По умолчанию -
0
Я его создал вот так:
$table->boolean('published')->default(false);
Если импортируемое значение = 1, то статья импортируется, а если оно равно 0, то статьи с таким значением не импортируются (пропускаются) и в конце импорта выводится ошибки по таким статьям. Там в ошибке что то про null упоминается.
Есть подозрение что это из за строки в цикле
$article->{$attribute} = $value ?: null;
Пробую исправить так, но так же статьи у которых значение поля = 0 не импортируются. В цикле добавил условие - пометил комментарием:
foreach ($results as $row => $data) {
try {
$article = Article::make(); // Создаем новую запись
$except = ['id']; // Исключить из цикла
// Цикл заполнения
foreach (array_except($data, $except) as $attribute => $value) {
if ($attribute == 'published') { // !!!! Добавил это условие
$value = $value == 1 ? true : false;
}
$article->{$attribute} = $value ?: null; // Присваивание значения в столбец по атрибуту
}
$article->save(); // Сохранение
$this->logCreated();
}
catch (\Exception $ex) {
$this->logError($row, $ex); // Ошибка
}
}
Может кто подсказать в чём здесь проблема?