我是否可以将某个变量传递给表名中的模型?
我有一个创建客户的模块。 现在,我们为每个客户创建一个单独的表。 客户拥有登录和注销凭证。
现在,无论何时创建客户,我都无法始终创建新模型并在其中传递名称。
所以我希望它动态,我不知道我怎么做。
对于每个客户,将有一个单独的表。
现在我想创建一个登录模型,但是我应该在表名中传递什么,它应该是动态的吗?
要完成这项工作的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 ;
答案 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可以使用库实现。所以你可以使用它所有的控制器强>