在答案讨论后到目前为止我所拥有的。
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
array(5)
{
[0]=> string(1) "1"
[1]=> string(1) "2"
[2]=> string(1) "3"
[3]=> string(1) "4"
[4]=> string(1) "5"
}
$data
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
。
答案 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');
}