我们在PHPCMSV9中调用某一个表的时候,只有两个方法:
第一,采用PHPCMS自带的方法,在model文件夹里建立xxx.model.class.php数据模型,里面写上需要调用的表名,然后采用pc_base::load_model('xxx_model');来进行调用,弊端就是每个表要创建一个model文件,很多很麻烦。
第二个方法就是写SQL来调用,这个是比较差的方法了。
有没有既不需要创建model或者说只创建一个model,又不需要写SQL语句,并且可以重复利用的方法呢,现在有了。
方法如下,还是要至少要创建一个model数据模型的:
第一步,在/phpcms/model里创建一个getis.class.php文件,放入下面代码:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class getis extends model {
public $table_name;
public function __construct() {
$this->db_config = pc_base::load_config('database');
parent::__construct();
}
/**
* 设置数据表
* @param tablename 需要调用的表
*/
public function table_name($tablename,$db_setting) {
$this->db = db_factory::get_instance($db_config)->get_database($db_setting);
$this->table_name = $this->db_config[$db_setting]['tablepre'].$tablename;
return $this->table_name;
}
}
?>
第二步在/phpcms/libs/functions/extention.func.php里放入下面代码:
function D($tabname,$db_setting='default'){
$data = pc_base::load_model('getis');
$db_config = $db_setting;
$data->table_name($tabname,$db_config);
return $data;
}
这样就可以使用全局函数D()来进行调用数据库里任意的一个数据表了,参考方法如下
$db = D('link');
$r = $db->get_one(array('linkid'=>'1'),'*','linkid DESC');
var_dump($r);
D全局函数默认是调用当前数据库里的数据表,如果是调用另一个数据库,请先参照https://www.ediok.cn/blog/2016/04/560.html 只在caches/configs/database.php里添加数据库链接信息,然后就可以加上第二个参数如:$db = D('link','forum'); 来进行使用了
周涛博客








评论前必须登录!
注册