如何给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’); 来进行使用了

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《如何给phpcms增加数据表全局调用D方法》
文章链接:https://www.qqooo.cn/html/2109.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
本站资源均来源于网络,若侵犯您的权益,请来信 Feelym@88.com 删除!