Codeigniter:如何使模型代码可重用?

时间:2019-02-24 19:56:52

标签: php sql codeigniter model controller

我以可以多次使用的方式编写了以下“插入代码”。因此,无需在模型中写表名,我就可以在控制器中写表名。

模型功能

function insertTable($table, $data) {
    $this->db->insert($table, $data);
    return $this->db->insert_id();
}

控制器指令

$insert = $this->Model_Action->insertTable('student',$student_data)

但是我也想在下面的代码中做同样的事情。有没有办法将p_id替换为$ id?

型号

  function delete_by_id($id)
    {
        $this->db->where('p_id', $id);
        $this->db->delete('parent');
    }

控制器

 public function student_delete($id)
{
    $this->load->model('Model_Action');
    $this->Model_Action->delete_by_id($id);
    echo json_encode(array("status" => TRUE));
}

5 个答案:

答案 0 :(得分:0)

如果要按ID删除“学生”表行,可以使用以下代码。

function delete_by_id($id) 
{
    $this->db->delete('student', array('id' => $id));
}

如果要按ID删除其他表行:

function delete_by_id($table, $id) 
{
    $this->db->delete($table, array('id' => $id));
}

答案 1 :(得分:0)

可以。您的模型

WHERE ((SAP_RECORD_T.FirstName) Like "*" & [Forms]![SearchBox_F]![txtFName] & "*") 
OR ((SAP_RECORD_T.FirstName) Is Null)
AND ((SAP_RECORD_T.LastName) Like "*" & [Forms]![SearchBox_F]![txtLName] & "*") 
OR((SAP_RECORD_T.LastName) Is Null)

然后在控制器的function delete_by_id($column_name, $id){ $this->db->where($column_name, $id); $this->db->delete('parent'); } 方法中使用它

student_delete

答案 2 :(得分:0)

好吧,您应该使用codeigniter Core Classes

在文件夹层次结构中,有一个名为core的文件夹,您可以在其中创建父控制器和模型。

您可以在几乎所有模型中使用我们正在使用的模型的所有功能,例如在此父模型中创建,更新,删除,读取记录并从该模型继承我们的应用程序模型。

在我们的控制器中,我们只需要获取模型名称并使用这些功能。

注意:自2018年以来,我一直使用相同的方式。

答案 3 :(得分:0)

您可以在模型中为可重复使用的插入,删除,编辑方法定义Table_name

您可以使用where条件明智地使用条件。

例如。

function get($id='',$name='')
{
    if($id >0)
    {
        $this->db->where('id',$id);
    }
}

答案 4 :(得分:0)

控制器:

在控制器中将所需的数据库表名称写入变量$ table。并将变量$ table传递给模型。

型号:

function insertTable($table, $data) {
    $this->db->insert($table, $data);
    return $this->db->insert_id();
}