вставке, если в базе уже есть значение, то он не обновлял, а просто пропускал?
$sql = Yii::$app->db->queryBuilder->batchInsert($tableName, $columns, $result);
return Yii::$app->db->createCommand($sql . ' ON DUPLICATE KEY UPDATE
name = VALUES(name)
')
->execute();
Да, можно переделать код, чтобы он пропускал обновление, если в базе уже есть значение. Для этого нужно использовать оператор INSERT IGNORE вместо INSERT. Также необходимо изменить запрос на batchInsert и добавить индекс на поле, которое должно быть уникальным (например, `name`). Вот пример кода: $sql = Yii::$app->db->queryBuilder->batchInsert($tableName, $columns, $result); return Yii::$app->db->createCommand($sql . ' ON DUPLICATE KEY UPDATE name = name') ->execute(); Здесь мы добавляем оператор$sql = Yiiк запросу batchInsert, чтобы он игнорировал дубликаты. Затем мы используем оператор ON DUPLICATE KEY UPDATE с пустым значением, чтобы он не обновлял значения при дублировании. Если вы хотите обновлять другие поля при дублировании, вы можете указать их вместо name = name. Также не забудьте добавить индекс на поле name, если вы его еще не создали: ALTER TABLE table_name ADD INDEX index_name (name);
Обсуждают сегодня