Есть класс ManuresImport, в нём метод collection(), а там уже запускается запись в базу через модель, вот так:
ManuresImportStatus::create([
'status' => 'Ошибка во время импорта111222',
'user_id' => 1
]);
Всё хорошо работает. Но если этот же кусок кода поместить в метод onFailure() - то уже ничего не пишется в базу. Я делаю дамп и до, и после этого куска кода - всё дампится.
В чём причина такого поведения?
Может импорт работает в транзакции и при ошибке идет ролбек, хз Но зачем тебе чтоб писалось?
у меня есть таблица в базе, куда надо писать статусы импорта после каждой попытки юзера загрузить эксель-файл (id юзера, кот. делал импорт, статус (например, ошибка) и т.д.). И я хотел реализовать такую логику - если поля эксель-файла не прошли валидацию, то мы заходим в метод onFailure() и оттуда пишем в базу строку с колонкой статуса "Ошибка во время импорта". Если же всё ок, то мы в этот метод не попадаем, и запись в базу идёт из другого места (например, из метода collection()) и со статусом "всё ок".
сейчас вижу, что я криво объяснил, запутал, наверное
Хех, вроде понял, обернуть запись про ошибку в транзакцию внутри failure Или в доке чет есть
да, вот в доке: Database transactions The entire import is automatically wrapped in a database transaction, that means that every error will rollback the entire import. When using batch inserts, only the current batch will be rollbacked. Наверное, как-то по-другому надо делать то, что я задумал)
Обсуждают сегодня