Php MY_模型-动态更改表?

Php MY_模型-动态更改表?,php,mysql,codeigniter,model,codeigniter-2,Php,Mysql,Codeigniter,Model,Codeigniter 2,使用,如何动态更改模型中使用的表名 我有一些非常相似的模型,一组由A组的用户使用,另一组由B组的用户使用 为了节省一些编码并使事情更整洁,我想合并模型,因此需要传递组,并根据传递的组更改表 我知道我可以在model类的开头下面设置表名,但是我想知道如何在调用model方法时动态地设置它 以下是我的一些测试代码: function setGroup($group) { switch($group) { case 'admin': case 'mod':

使用,如何动态更改模型中使用的表名

我有一些非常相似的模型,一组由A组的用户使用,另一组由B组的用户使用

为了节省一些编码并使事情更整洁,我想合并模型,因此需要传递组,并根据传递的组更改表

我知道我可以在model类的开头下面设置表名,但是我想知道如何在调用model方法时动态地设置它

以下是我的一些测试代码:

function setGroup($group)
{
    switch($group) {
        case 'admin':
        case 'mod':
            $this->table = 'library_categories';
            break;
        case 'members':
            $this->table = 'user_categories';
            break;
    }

    return $this;
}
这不管用

如果我以A组的表命名模型,例如Group_A_model.php,那么即使设置B组的表($this->table='Group_B'),实际上也不会更改查询的表

我尝试给模型起一个通用名(group_model),但是我必须在模型中设置“public$table='group_a')。同样,提供的代码实际上不会更改使用的表,它始终使用表组。\u a


是否有方法使用此MY_Model helper更改所使用的表?

该库中没有
$this->table

有一个
$this->\u表
,库使用它来标识表。。但不幸的是,该属性受到保护,因此您无法从类外部更改其值

将以下方法添加到类中:

 public function setTable($table)
 {
    $this->_table = $table;
 }
这意味着您现在可以使用
$this->setTable('a_db_table')设置表名

您可以通过直接编辑类文件来添加该方法。或者通过使用您自己的类对该类进行子类化。。例如:

class custom_model extends MY_Model{
   //put the method I mentioned earlier here
}

将viriable添加到$this->table示例$table=$this->table=“sample”哈哈,是的,我不久就明白了,谢谢你:)将你标记为答案!