首页 网络技术
  1. 正文

如何给phpcms增加数据表全局调用D方法

我们在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.zhoutao.org/blog/2016/04/560.html 只在caches/configs/database.php里添加数据库链接信息,然后就可以加上第二个参数如:$db = D(‘link’,’forum’); 来进行使用了

本文标题:如何给phpcms增加数据表全局调用D方法
本文链接:https://www.qqooo.cn/post/2109.html
版权说明:网站文章均来源于手工整理和网友投稿,若有不妥之处请来信 feelym@88.com 处理,谢谢!