0

我有一个酒店网站的表格,我想更新它的服务,而客户想一次更新多个服务。但是,我迷失了如何将其与模型一起保存在数据库中。

我已经构建了我的控制器,它看起来像这样:

$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);

[更新]

这就是我的新模型的样子:

function save_multiple($items = array())
{
    $this->db->insert_batch($this->__tabla, $items);
    return $this->db->affected_rows();
}

我的问题是,即使我只填充 3 个字段,它现在也会创建 10 行(我的原始表单有 10 个字段)。所以在我的数据库中存储了 3 个服务,还有 7 个空白行。怎么能改变呢?

4

2 回答 2

1
foreach $items //I get an error here
    as $item 

应该

foreach ( $items as $item ) 
于 2013-03-21T16:23:25.190 回答
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)
    );
}
....
于 2013-03-21T17:42:17.767 回答