Как правильно удалить запись из БД при импорте?

Здравствуйте!

Вводные: Yii2, MySQL, Excel

Импортируем данные из Excel файл а в базу данных, проверяем если запись уже существует в БД, то изменяем её, если нет, то добавляем новую. Вопрос как удалить строку из БД, если она в БД есть, но в импортируем файле её нету?

$emodel = new \app\models\Products;
$exists = $emodel->find()->where(['article' => $sheetData[$baseRow]['A']])->exists();

if($exists > 0) {
 // Изменяем
} else {
// Добавляем
}
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 3
kawabanga
@kawabanga
Не всегда вы за раз пройдете весь excel файл.

Лет 5 назад занимался плотно экселем в php. И конкретно в вашей задаче я добавлял поле is_imported .
Перед началом всего импорта - ставил 0 во все строки. После окончания импорта, работал с неизмененными строками.
Ответ написан
kimono
@kimono
Web developer
Добавляем колонку `is_free`.
Перед началом обработки ставим на необходимые строки `is_free` = 1.
Проходим по всем строкам в файле, при добавлении или изменении ставим `is_free` = 0.
Удаляем все записи `is_free` = 1.
Ответ написан
Комментировать
@davidnum95
Сохраняем id записей которые добавились/изменились в массив, затем удаляем из базы все записи, которых нет в массиве.
Product::deleteAll(['not', ['id' => $ids]]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы