Пакетное обновление активной записи codeigniter, где условие where равно индексу массива

У меня есть массив почтовых данных ($ data) в codeigniter, который выглядит как прикрепленное изображение.

введите описание изображения здесь

И база данных, которая выглядит как:

id: 3
val: 37.10119357072203

id: 4
val: -122.06634521484374

Я хочу вставить значение массива в поле ‘val’ на основе ключа массива, соответствующего полю ‘id’ базы данных. Как мне сделать это с помощью update_batch codeigniter. Моя модель в настоящее время:

public function edit_config($data){
$this->db->update_batch('extra_config', $data,'val');
}

но я получаю ошибку:

One or more rows submitted for batch updating is missing the specified index.

введите описание изображения здесь

0

Решение

Вы должны подготовить свои данные, это не нормально, чтобы не трогать их из входящего запроса.

public function edit_config($data){
$updateData = array();
foreach($data['val'] as $key=>$value) {
$updateData[] = array('id'=>$key, 'val'=>$value);
}

$this->db->update_batch('extra_config', $updateData,'id');
}
1

Другие решения

Других решений пока нет …