• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!

phpcms v9二次开发之数据模型类

2015-06-13 15:45:00   来源:叶景网络
    phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询、添加、修改和删除数据等操作,所有这些操作都离不开数据模型类model.class.php,它起到开发者与数据表的交互作用。model.class.php里面封装了许多数据表操作的方法,基本上常用的mysql操作语句都能从中找到,但是它又和原生态的mysql语句有所不同,和其它PHP内容管理系统一样,PHPCMS也对原生态的mysql语句进行封装简化,以使它操作起更加方便,为开发者省去了不少麻烦。具体我们来看一下model.class.php代码片断:
<?php
pc_base::load_sys_class('db_factory', '', 0);
class model {
      
    ...
      
    public function __construct() {
    if (!isset($this->db_config[$this->db_setting])) {
     $this->db_setting = 'default';
    }
    $this->table_name = $this->db_config[$this->db_setting]['tablepre'].$this->table_name;
    $this->db_tablepre = $this->db_config[$this->db_setting]['tablepre'];
    $this->db = db_factory::get_instance($this->db_config)->get_database($this->db_setting);
    }
          
    /**
     * 执行sql查询
     * @param $where        查询条件[例`name`='$name']
     * @param $data         需要查询的字段值[例`name`,`gender`,`birthday`]
     * @param $limit        返回结果范围[例:10或10,10 默认为空]
     * @param $order        排序方式    [默认按数据库默认方式排序]
     * @param $group        分组方式    [默认为空]
     * @param $key          返回数组按键名排序
     * @return array        查询结果集数组
     */
   final public function select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') {
    if (is_array($where)) $where = $this->sqls($where);
    return $this->db->select($data, $this->table_name, $where, $limit, $order, $group, $key);
    }
...
}
如上面的 select语,和mysql的select()有所不同,只要传入相关参数就可以实现mysql要用很多语句才能实现的功能。更多请看model.class.php。
 
 
模块模型类:数据表名称+'_model.class.php'
模块模型类的位置:phpcms/model/
 在调用model.class.php里面的方法时,需要先把它实例化。每个模型对应一张数据表,每张数据表对应一个模块模型类。现在我们来建一个球队的模块模型表'fbteam',那么它对应的模型类为football_model.class.php,完整代码如下:
 
 
<?php
  
defined('IN_PHPCMS') or exit('No permission resources.');
  
pc_base::load_sys_class('model', '', 0);//加载加载系统模型类model.class.php
class football_model extends model {//球队模型类football_model.class.php继承系统模型类model.class.php
       public $table_name;//声明一个数据表变量
       public function __construct() {//初始化球队模型类的构造函数
  
              $this->db_config = pc_base::load_config('database');//加载数据库配置文件database.php
  
            $this->db_setting = 'default';//为数据库配置文件中配置数据库链接池名称,默认为default
  
            $this->table_name = 'fbteam';//'fbteam'为球队数据表的名称
  
              parent::__construct();//调用父类model.class.php的构造函数,以获取父类的属性方法
  
       }
  
}
  
?>
    这样我们就建立好了一个球队模块的数据模型类。
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
discuz插件开发的入门篇 discuz插件开发的入
彻底解决关于dedecms留言板的安装问题 彻底解决关于dedecm
DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 DiscuzX2.5登录无法
discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2.5安装手
关注排行RANKING
1

discuz插件开发的入门篇

discuz插件开发的入门篇 在config config_global php 文件里设置$_config[ plugindeveloper ] = ...

2

彻底解决关于dedecms留言板的安装问题

彻底解决关于dedecms留言板的安装问题 先前使用dedecms5 5做的网站在服务器上运行两年了,某天突然想给网站加上个留言板模块...

3

DiscuzX2.5登录无法同步登录到PHPCM...

DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领...

4

discuz X2.5安装手动选择ucenter时...

discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2 5安装时想自定义选择ucenter时出错,因为discuz X2 5中也有一个uc_server...

5

Discuz百万级数据的压力测试实现(...

Discuz百万级数据的压力测试实现(创建海量数据库) 由于开发的需求,对discuz创建海量数据库来进行压力测试,以下是对discuz百万级数据的压...

6

discuzX2.5安装不成功,到了正在安装...

discuzX2.5安装不成功,到了正在安装附加数据就不动了 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

7

Discuz!中分表的实现方法

Discuz!中分表的实现方法 论坛系统中的帖子表,是访问量大很大的表,为了保证数据的快速提取返回给用户,...

8

什么情况下选用hdwiki(for discuz)?

什么情况下选用hdwiki(for discuz)? 如果您已经有了一个dz论坛,并且还想要一个自己专业的知识库,建个百科频道。建...

9

让hdwiki使用discuz的登录和注册

让hdwiki使用discuz的登录和注册 hdwiki是国内开源wki结构简单,安装使用还是很方便的。discuz是使用最多的开源BBS。