表名称为Model Codeigniter中的变量

时间:2016-02-25 09:17:43

标签: php mysql codeigniter

我是否可以将某个变量传递给表名中的模型?

我有一个创建客户的模块。 现在,我们为每个客户创建一个单独的表。 客户拥有登录和注销凭证。

现在,无论何时创建客户,我都无法始终创建新模型并在其中传递名称。

所以我希望它动态,我不知道我怎么做。

对于每个客户,将有一个单独的表。

现在我想创建一个登录模型,但是我应该在表名中传递什么,它应该是动态的吗?

要完成这项工作的mysql架构应该是什么?

这是我的样本代码:

    class Customer_User_M extends MY_Model

{

    protected $_table_name = 'customer1';
    protected $_order_by = 'name';


    public function __construct()
    {
        parent::__construct()
    }

}

客户表:

CREATE TABLE IF NOT EXISTS `customer1` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `site_key` varchar(50) NOT NULL,
    `display_name` varchar(100) NOT NULL,
    `ext` varchar(15) NOT NULL,
    `auth_user` varchar(100) NOT NULL,
    `password` varchar(128) NOT NULL,
    `base_ini_id` varchar(50) NOT NULL,
    `comments` varchar(200) NOT NULL,
    `custom_ini_filename` varchar(50) NOT NULL,
    `email` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

3 个答案:

答案 0 :(得分:1)

你可以简单地在模型中创建一个函数,并将create table的代码放在函数中,并从下面的控制器中传递函数中的动态表名....

模型功能代码:

function access_customer_table($table_name)
{
        //put ur select query here with table name in FROM clause will be     $table_name
}

在加载模型后在控制器中调用此模型函数...并将您的表名作为参数... 喜欢:

$this->load->model('Customer_User_M');
$this->Customer_User_M->access_customer_table('new_customer_table_name');

如果需要,请更正语法..如果逻辑中有任何错误,请告诉我......

答案 1 :(得分:1)

我在加载模型后尝试设置表名。只是为我工作。

$this->load->model('customer_model','customer');

然后,

$customer->table_name = "customer_xxx";

答案 2 :(得分:0)

最好在客户表中保存常见客户详细信息,并创建另一个表来存储具有外键客户ID的不同字段的客户的不同数据。

此处,如果您想将动态表名传递给模型,则需要使用键值对确定所有表名作为关联数组 。然后你可以将所需的键值传递给model.It可以使用实现。所以你可以使用它所有的控制器