我有一个酒店网站表单,我想更新其服务,客户希望一次更新多个服务。然而,我迷失了如何使用模型将其保存在数据库中。
我已经构建了我的控制器,它看起来像这样:
$items = array(
array(
'id' => $this->input->post('id1', true),
'hotel_id' => $hotel_id,
'des_servicio' => $this->input->post('des_servicio1', true),
'est_activo' => $this->input->post('est_activo1', true)
),
array(
'id' => $this->input->post('id2', true),
'hotel_id' => $hotel_id,
'des_servicio' => $this->input->post('des_servicio2', true),
'est_activo' => $this->input->post('est_activo2', true)
),
array(
'id' => $this->input->post('id3', true),
'hotel_id' => $hotel_id,
'des_servicio' => $this->input->post('des_servicio3', true),
'est_activo' => $this->input->post('est_activo3', true)
)
);
$this->hotel_model->save_multiple($items);
[UPDATE]
这就是我的新模型的样子:
function save_multiple($items = array())
{
$this->db->insert_batch($this->__tabla, $items);
return $this->db->affected_rows();
}
我的问题是现在它创建了10行(我的原始表单有10个字段),即使我只填充3个字段。所以在我的数据库中存储了3个服务,还有7个空行。怎么能改变这个?
答案 0 :(得分:1)
foreach $items //I get an error here
as $item
应该是
foreach ( $items as $item )
答案 1 :(得分:0)
请记住,如果未设置值,则input-> post()将返回false。因此,请检查是否设置了值以将其放入数组中。然后当模型收到它。它节省了所有。或者另一种选择是从传入的数组中在模型中创建一个新数组,然后将新数组传递给insert_batch()函数。
$items = array();
$id = $this->input->post('id1', true);
if( $id != false ) {
$items[] = array(
'id' => $id, true),
'hotel_id' => $hotel_id,
'des_servicio' => $this->input->post('des_servicio1', true),
'est_activo' => $this->input->post('est_activo1', true)
);
}
$id = $this->input->post('id2', true);
if( $id != false ) {
$items[] = array(
'id' => $id, true),
'hotel_id' => $hotel_id,
'des_servicio' => $this->input->post('des_servicio2', true),
'est_activo' => $this->input->post('est_activo2', true)
);
}
....