Как я могу решить мою проблему с пакетным обновлением codeigniter?

#mysql #arrays #codeigniter #foreach

#mysql #массивы #codeigniter #foreach

Вопрос:

Привет, ребята, я просто хочу спросить, в моем проекте есть три таблицы product, color и product_color.Я вставляю базу данных с помощью insert_batch, тогда она работает нормально, когда я обновляю таблицу product_color с помощью update_batch, то сталкиваюсь с некоторыми проблемами.Вот мой пример кода:

База данных:

 product:id,name,sku...
color:id,color_name
product_color:id,pro_id,color_id
  

Форма ввода:

 <?php foreach($colors as $color): ?>
<input type="checkbox" class="form-check-input" name="color[]" value="<?php echo $color->color_id; ?>" <?php foreach ($productcolor as $key => $value){ $array[] = $value->color_id;} if(in_array($color->color_id,$array)) echo 'checked'; else '';  ?>>
 <label class="form-check-label">
<?php echo $color->color_name; ?>
</label>
<?php endforeach; ?>
  

На самом деле я хочу передать основной идентификатор из таблицы product_color.Здесь я передаю color_id.Есть какой-либо способ передать основной идентификатор из формы ввода;
Вот мой контроллер:

 $colorBatch =  array();
foreach ($color as $colorvalue) {               
$colorBatch[] = array(
               'id'=>$id
               'pro_id'    =>$pid,
                'color_id'  => $colorvalue
                );
              }
$this->db->update_batch('product_color', $colorBatch,'pro_id');
  

Где $pid содержит product_id;

Возможно ли передать первичный идентификатор таблицы product_color из формы ввода или есть какое-либо лучшее решение для решения этой проблемы.Извините за плохой английский.

Спасибо

Ответ №1:

Пожалуйста, проверьте приведенный ниже код, поскольку ваша структура массива неверна;

 $colorBatch =  array();
foreach ($color as $key => $colorvalue) {               
$colorBatch[$key] = array(
               'id'=>$id
               'pro_id'    =>$pid,
                'color_id'  => $colorvalue
                );
              }
$this->db->update_batch('product_color', $colorBatch,'pro_id');