Получение идентификатора в виде массива в update_batch в codeigniter - PullRequest
0 голосов
/ 29 мая 2018

Я получаю идентификатор как массив при выполнении пакетного обновления.Не удалось обновить данные в моей существующей таблице данных.Пожалуйста, помогите мне

Мое сообщение об ошибке показано ниже Сообщение об ошибке в виде формата изображения

Контроллер

public function update() 
{

$sID   = $this->input->post('test_id[]');
$sAmt  = $this->input->post('test_priceUpdt[]');
$sOfficeId = $this->input->post('fran_office_id');
$edited_test = array();
for ($i=0; $i < sizeof($sID); $i++)
		{
			if(!empty($sID[$i])) 
			$edited_test[$i] = array(
				'test_id' => $sID[$i],
				'test_priceUpdt' => $sAmt[$i],
				'fran_office_id' => $sOfficeId
			);
}

$edited_test = json_encode($edited_test); 
$data['franchise_tst_pkg'] = (object)$postData = array (
				array(
					'test_id' => $sID,
					't_franchise_price' => $edited_test
				)
			
 ); 
 if ($this->form_validation->run() === true) {
 $this->franchise_price_model->batchTestupdate($postData))
 }

}

Просмотр

<tr>
  <td>
    <input type="text" name="test_name[]" class="form-control" placeholder="" value="<?php echo $subject->test_name; ?>" disabled>
    <input type="hidden" name="test_id[]" class="form-control" placeholder="" value="<?php echo $subject->test_id; ?>">
  </td>
  <td>
    <input type="text" name="test_price[]" class="form-control" placeholder="" value="<?php echo $subject->test_price; ?>" disabled>
  </td>
  <td>
    <input type="text" name="test_priceUpdt[]" class="form-control" placeholder="" value="<?php echo $subject->test_price; ?>" id="test_priceEdt">
  </td>
</tr>

Модальный

public function batchTestupdate($data = []) 
{ $this->db
        ->update_batch($this->table_test, $data , 'test_id');
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Второй параметр в вашей функции update_batch(..) структурирован неправильно.

Изменение:

$data['franchise_tst_pkg'] = (object)$postData = array (
                array(
                    'test_id' => $sID,
                    't_franchise_price' => $edited_test
                )

Кому:

$postData = array();
if(is_array($sID)){
    foreach($sID as $k=>$v){
        $postData[] = array(
            'test_id' => $v,
            't_franchise_price' => $edited_test
        );
    }
}
$data['franchise_tst_pkg'] = (object)$postData;
0 голосов
/ 29 мая 2018

Вы можете изменить модель как:

public function batchTestupdate($data = []) 
{ $this->db
        ->update_batch($this->table_test, explode(',', $data) , 'test_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...