我的表中有以下记录:
id status
129 'Ready'
129 'Ready'
129 'Confirm'
129 'Confirm'
129 'Processing'
130 'Confirm'
我要更改的是根据用户输入根据id更改状态。
我正在如下所示捕获控制器中的用户输入:
$id= $this->input->post("id");
$confirm = $this->input->post("confirm");
$processing = $this->input->post("processing");
$ready = $this->input->post("ready");
$delivered = $this->input->post("delivered");
用户输入值的示例如下:
$id= 129
$confirm = 1
$processing = 2
$ready = 2
$delivered = 0
这基本上意味着,所有ID为129的行都应具有顺序状态,确认应出现一次,处理两次,准备就绪,但未交付。
如何使用上面的输入数据来更新状态,使其类似于以下内容:
id status
129 'Ready'
129 'Ready'
129 'Confirm'
129 'Processing'
129 'Processing'
130 'Confirm'
在我的模型中,我尝试如下进行操作,但无法正常工作。
public function update_status($serialized,$confirm,$processing,$ready,$delivered) {
$data = array(
'status' => 'Confirm',
);
$this->db->where('is_serialized', $serialized);
$this->db->limit($confirm);
$this->db->update('items', $data);`$data = array(
'status' => 'Processing',
);
$this->db->where('is_serialized', $serialized);
$this->db->limit($processing);
$this->db->update('items', $data);
$data = array(
'status' => 'Ready',
);
$this->db->where('is_serialized', $serialized);
$this->db->limit($ready);
$this->db->update('items', $data);
$data = array(
'status' => 'Delivered',
);
$this->db->where('is_serialized', $serialized);
$this->db->limit($delivered);
return $this->db->update('items', $data); }
任何帮助将不胜感激。
`
答案 0 :(得分:1)
尝试一下:
function update_status($id, $serialized, $confirm = 0, $processing = 0, $ready = 0, $delivered = 0) {
if (count($confirm) > 0) {
$this->db->where('id', $id);
$this->db->where('is_serialized', $serialized);
$this->db->limit($confirm);
$this->db->update('items', array('status' => 'Confirm'));
}
if (count($processing) > 0) {
$this->db->where('status', 'Confirm');
$this->db->where('id', $id);
$this->db->where('is_serialized', $serialized);
$this->db->limit($processing);
$this->db->update('items', array('status' => 'Processing'));
}
if (count($ready) > 0) {
$this->db->where('status', 'Processing');
$this->db->where('id', $id);
$this->db->where('is_serialized', $serialized);
$this->db->limit($ready);
$this->db->update('items', array('status' => 'Ready'));
}
if (count($delivered) > 0) {
$this->db->where('status', 'Ready');
$this->db->where('id', $id);
$this->db->where('is_serialized', $serialized);
$this->db->limit($delivered);
$this->db->update('items', array('status' => 'Delivered'));
}
}