CI传递数组到模型where子句

时间:2016-01-10 11:41:24

标签: jquery arrays codeigniter

在答案讨论后到目前为止我所拥有的。

JS中的数组声明:

var remove_rows = [];
var row_id = $(this).closest('div').find('row_id');
remove_rows.push(row_id);

使用ajax将数组传递给Controller:

$.ajax({
  type: "POST",
  url: BASE_URL+'rows/deleterows',
  data: {batch:remove_rows},
  success: function(data){
         alert("Deleted!");
  }
});

$data

的Var_dump
array(5) 
{ 
  [0]=> string(1) "1" 
  [1]=> string(1) "2" 
  [2]=> string(1) "3" 
  [3]=> string(1) "4" 
  [4]=> string(1) "5" 
} 

$data

的print_r
Array
(
    [0] => 8
    [1] => 9
)

在我的控制器中:

public function deleteRows(){
  $data = $this->input->post('batch');
  $this->Rows_model->deleteRows($data);
}

在我的模特中:

public function deleteRows($data){
  $this->db->update_batch('rows', 'active', '0'); 
  $this->db->where('row_id', $data);
}

所以基本上我想将所有rows.active设置为0,如果id在数组中。

我想让它看起来像这样: UPDATE table SET active = 0 WHERE row_id = 1 OR row_id = 2 OR row_id = 3... ID来自数组的row_id

3 个答案:

答案 0 :(得分:1)

你试过吗

//assumeing $data=array(5,6,7);
$this->db->where_in('row_id', $data);

答案 1 :(得分:1)

您可以尝试使用某些检查:

在控制器中检查数据是否为数组:

public function deleteRows(){
  $data = $this->input->post('batch');

  if (is_array($data)){
     $this->Rows_model->deleteRows($data);
  }
}

在模型中使用where_in并删除批量更新:

public function deleteRows($data){


$this->db->where_in('row_id', $data);
$this->db->update('rows', 'active',0); 

}

在JS中使用push就像:

    var remove_rows = []; 
var row_id = $(this).closest('div').find('row_id'); 
remove_rows.push(row_id);

答案 2 :(得分:0)

我找到了答案:

public function deleteRows($data){
    $this->db->set('active', '0'); // what is lacking 
    $this->db->where_in('row_id',$data);
    $this->db->update('rows'); 
}

Source