我尝试强制应用在每次加载模型或控制器时进行检查,具体取决于我的会话值。
这实际上是运行的,但就在我抛出这个模型的时候。
class News_model extends CI_Model {
public function __construct()
{
parent::__construct();
if($this->session->dbname=='db1'){
$this->db=$this->load->database('db1', TRUE);
}
else{
$this->db=$this->load->database('db2', TRUE);
}
}
public function get_news($slug = FALSE)
{
if ($slug === FALSE)
{
$query = $this->db->get('news');
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
}
但我并不警告要将__构造代码包含到我所有模型或控制器中。
我试着添加我的autoload.php
$autoload['model'] = array('General');
我的通用代码是这样的。
class General extends CI_Model {
function __construct()
{
parent::__construct();
if($this->session->dbname=='db1'){
$this->db=$this->load->database('db1', TRUE);
}
else{
$this->db=$this->load->database('db2', TRUE);
}
}
}
我该怎么做呢?
1条答案
按热度按时间nszi6y051#
您可以通过创建一个基本模型来完成,该模型将由需要数据库检查的模型进行扩展。
我已经简化了检查和加载代码,一个简单的三进制决定要使用的字符串,并将其存储在变量
$dbname
中,该变量用于加载数据库,即$this->load->database($dbname);
。我不认为你需要
load::database()
的第二个参数,这意味着你不需要显式地设置$this->db
。下面是基础模型,文件名的前缀是在config.php中通过设置
$config['subclass_prefix'] = 'MY_';
来确定的调整基础模型的文件和类名,使其与您使用的'subclass_prefix'相匹配。/应用程序/核心/MY_模型.php
使用上述创建其他模型,如...