删除多个表行 - PHP Codeigniter

时间:2016-07-24 09:17:12

标签: php codeigniter

所以我有这个控制器来运行模型功能

控制器:

public function delete()
{
    if ($this->phome_model->delete_expired()) {
        $this->session->set_flashdata('pesan', 'Success. Back to '. anchor('program', 'home.', 'class="alert-link"'));
        redirect('program/admin/user/sukses');
    } else {
        $this->session->set_flashdata('pesan_error', 'Error. Back to '. anchor('program', 'home.', 'class="alert-link"'));
        redirect('program/admin/user/error');
    }
}

这是模特:

public function delete_expired()
{
    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_History) >=', 5);
    $this->db->delete('tb_medical_history');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Fisik) >=', 5);
    $this->db->delete('tb_fisik_jiwa');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Radiologi) >=', 5);
    $this->db->delete('tb_radiologi');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Lab) >=', 5);
    return $this->db->delete('tb_laboratorium');
}

我在这里尝试做的是删除数据过期的那些多个表(迟到5年)。在模型函数上,我需要检查每个表上的数据是否使用return函数成功删除,并将其传递给控制器​​以显示消息。但是功能只能返回1次,那么我该如何解决这个问题呢?感谢

1 个答案:

答案 0 :(得分:1)

您可以为您的模型使用以下代码:

public function delete_expired()
{
    $del = array();

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_History) >=', 5);
    $del[] = (bool) $this->db->delete('tb_medical_history');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Fisik) >=', 5);
    $del[] = (bool) $this->db->delete('tb_fisik_jiwa');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Radiologi) >=', 5);
    $del[] = (bool) $this->db->delete('tb_radiologi');

    $this->db->where('YEAR(CURDATE()) - YEAR(Tanggal_Periksa_Lab) >=', 5);
    $del[] = (bool) $this->db->delete('tb_laboratorium');

    return in_array(false, $del);
}

使用此函数可以将查询的所有返回值存储在数组中。 in_array函数在false数组中搜索$del,如果数组中有false则表示存在失败的查询。