找回密码
 立即注册
搜索
查看: 1630|回复: 0

【discuz 插件教程】数据库操作(三)

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2014-12-17 15:06:55 | 显示全部楼层 |阅读模式
MVC开发思想Modle:模型
View:视图(模板)
Contriller:控制器(流程控制,比如获取get值,post值,判断当前用户是否登录等等)
内置模型目录:
产品跟目录/source/class/table/table_xxx.php这个xxx在数据库中就是表名
这个目录下有239个文件,与数据库中有250个表,是一一对应关系的239个文件和250个表的数量不一样是因为数据库中有些数据表做了分表
如图

在文件夹中的文件名叫:table_common_admincp_cmenu.php
在数据库中的表明叫:pre_common_admincp_cmenu
每一个表的内容及意义可以查阅数据库字典
http://faq.comsenz.com/library/database/x3/x3_index.htm
插件模型目录:
产品根目录/source/plugin/插件目录/table/table_xxx.php

模型调用方法
内置模型调用
C::t('模型类名')->模型方法()
类名与文件名是保持一致的,而且要继承discuz_table类
格式代码:
  1. <?php
  2. $data = C::t('common_credit_rule')->fetch_all_by_action('reply');
  3. debug($data);
复制代码
关系理解流程图:




  1. if(!defined('IN_DISCUZ')) {
  2.         exit('Access Denied');
  3. }
复制代码
上面这句的作用是:防止用户直接跳过主程序,而直接执行


插件模型调用
C::t('#插件标识符#模型类名')->模型方法()
关系理解流程图:
$this->_table = 'test_db'; 表示数据表名称,去掉了表前缀pre_
$this->_pk    = 'id';表示数据表主键名称
$this->_pre_cache_key    = 'test_db_';数据缓存key前缀,格式是表明加下划线_
模型类名:test_db 去掉了前面的table_前缀

模型基类CURD(增删改查)的快捷使用方法
方法名 方法作用
insert() 插入数据
delete() 删除数据
update() 更新数据
fetch() 根据主键值查询数据
fetch_all() 根据主键值查询数据组
range() 查询指定范围的数据
count() 计算数据表数据总数



到第28分钟


discuz_table.php 中 的insert方法:
  1. public function insert($data, $return_insert_id = false, $replace = false, $silent = false) {
  2.                 return DB::insert($this->_table, $data, $return_insert_id, $replace, $silent);
  3.         }
复制代码
所以可以再自己的数据表类文件中可以自定义写这样的方法:
  1. public function add_name($name) {
  2.                 $this->insert(array(
  3.                                 'name' => $name,
  4.                         ));
  5.         }
复制代码
在INC文件中.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 16:12 , Processed in 0.093380 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表