gpt4 book ai didi

php - MY_Model - 动态更改表?

转载 作者:行者123 更新时间:2023-11-29 13:09:58 25 4
gpt4 key购买 nike

使用https://github.com/jamierumbelow/codeigniter-base-model ,如何动态更改模型中使用的表名称?

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

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

我知道我可以在模型类的开头设置表名称,但我想知道如何在调用模型方法时动态设置它?

这是我的一些测试代码:

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')”。同样,提供的代码实际上不会更改所使用的表,它始终使用表 group_a...

有没有办法使用这个 MY_Model 帮助器来更改所使用的表?

最佳答案

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

将以下方法添加到类中:

 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
}

关于php - MY_Model - 动态更改表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com