如何用一个模型替换多个相似的函数?

问题描述 投票:0回答:1

目前我正在使用这些函数来进行查询:

public function Surat_300() {
    $query = $this->db->query(" SELECT * FROM `ts_300` WHERE `status_surat` = '1' ");
    return $query->num_rows();
}

public function Surat_336_a() {
    $query = $this->db->query(" SELECT * FROM `ts_336_a` WHERE `status_surat` = '1' ");
    return $query->num_rows();
}

public function Surat_336_b() {
    $query = $this->db->query(" SELECT * FROM `ts_336_b` WHERE `status_surat` = '1' ");
    return $query->num_rows();
}

public function Surat_336_c() {
    $query = $this->db->query(" SELECT * FROM `ts_336_c` WHERE `status_surat` = '1' ");
    return $query->num_rows();
}
php mysql codeigniter codeigniter-3
1个回答
0
投票

对于这种情况,您可以在查询字符串中使用变量(例如:

$table
)来表示您想要从中获取数据的表:

此变量可以作为 $_POST 变量从输入字段或通过 ajax 调用在控制器中接收,作为 $_SESSION 变量、URL 等。

public function Surat($table) { 
  $query = $this->db->query(" SELECT * FROM $table WHERE status_surat = '1' "); 
  return $query->num_rows(); 
}

由于它被标记为 Codeigniter,我建议利用该框架,使用以下语法来生成更安全的查询:

public function Surat($table) { 
  $query = $this->db->query->where('status_surat', 1) 
                           ->get($table); 
  return $query->num_rows();    
}
// change 1 to '1' if status_surat represents a string, not a boolean/numeric.

从控制器中,您可以这样调用模型函数:

$myrows=$this->My_model->Surat('ts-300');
© www.soinside.com 2019 - 2024. All rights reserved.