【问题标题】:Delete multiple table row - PHP Codeigniter删除多个表行 - PHP Codeigniter
【发布时间】:2016-11-27 18:35:39
【问题描述】:

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

控制器:

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 年后)的多个表。在模型函数上,我需要使用返回函数检查每个表上的数据是否已成功删除,并将其传递给控制器​​以显示消息。但是函数只能有 1 个返回,那么我该怎么做才能解决这个问题?谢谢

【问题讨论】:

  • 您想知道所有查询都成功还是删除了行?
  • @splash58 我想知道这些行已成功删除
  • 查询可能成功,但由于 where 条件不会删除任何行。因此,您可以检查该行是否成功并检查已删除行的数量。这是两个不同的测试

标签: php codeigniter


【解决方案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函数在$del数组中搜索false,如果数组中有false则表示有查询失败。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多