Как сделать replace вместо insertBatch для вставки/обновления несколько записей?
Как сделать replace вместо insertBatch для вставки/обновления несколько записей?
replace не работает с многомерным массивом, он обновляет запись если совпадает первичный ключ, а также и просто вставляет запись.
insertBatch работает с многомерным массивом, но он просто вставляет записи.
// url c первичным ключем
$data = [
['url' => 'https://google.com/', 'name' => 'Google'],
['url' => 'https://yandex.com/', 'name' => 'Yandex'],
// более 1000 записей
];
$builder = $this->db->table('posts');
$builder->replace($data); // не работает
CodeIgniter 4
https://codeigniter.com/user_guide/database/query_builder.html#updating-data
Ответы (1 шт):
Вопрос, конечно, давний, но всё же.
В версии CodeIgniter 4.3.0 появился новый метод upsertBatch(). Думаю, то что требовалось - обновить или вставить новые записи.
https://codeigniter4.github.io/userguide/database/query_builder.html#upsertbatch
P.S. Версия вышла 20.01.2023, странно, что не обратили внимание на этот метод.