Discuz!X3.1数据库的操作

Posted alleyonline的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Discuz!X3.1数据库的操作相关的知识,希望对你有一定的参考价值。

MVC开发思想简介

MVC全名是Model-View-Controller,是模型(model)-视图(view)-控制器(controller)的缩写,它是一种软件设计思想。使用一种业务逻辑,数据和显示分离的方法组织代码,实现代码复用的最大化。

MVC的执行流程

技术分享

mvc执行流程

模型目录介绍

内置模型目录

产品根目录/source/class/table/table_xxx.php

插件模型目录

产品根目录/source/plugin/插件目录/table/table_xxx.php

模型调用方法

内置模型调用

C::t(‘模型类名‘)->模型方法()

1
2
3
4
5
6
7
8
<?php
    $data = C::t(‘common_credit_rule‘)->fetch_all_rule();
    print_r($data);
    
    //通过$action动作取出数据
    $data1 = C::t(‘common_credit_rule‘)->fetch_all_by_action(reply);
    print_r($data1);
?>

插件模型调用

C::t(‘#插件标识符#模型类名‘)->模型方法()

1
2
3
4
<?php
    //调用插件模型
    $data2 = C::t(‘#licai#test_db‘)->test()
?>

模型基类属性介绍

属性名 属性值
$_table 数据表名称
$_pk 数据表主键名称
%_pre_cache_key 数据缓存Key前缀

用法:

1
2
3
$this->_table ‘test_db‘;//数据库表名称
$this->_pk    ‘dId‘;//数据表主键名称
$this->_pre_cache_key ‘test_db_‘;//数据缓存

模型基类CURD方法介绍

方法名 方法作用
insert() 插入数据
delete() 删除数据
update 更新数据
fetch() 根据主键值查询数据
fetch_all() 根据主键值查询数据组
range() 查询指定范围的数据
count() 计算数据表数据总数

用法(模型):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    //防止程序跳过主程序执行判断
    if(!defined(‘IN_DISCUZ‘){
        exit(‘Access Denied‘);
    }
    
    class table_test_db extends discuz_table{
            public function __construct({
        
                $this->_table ‘test_db‘;//数据库表名称
                $this->_pk    ‘dId‘;//数据表主键名称
                //$this->_pre_cache_key = ‘test_db_‘;//数据缓存
        
                parent::__construct();
            }
            //插入数据
            public function add_name($name){
                  $this->insert(array(
                          ‘dname‘=>$name
                  ));
                }
            //更新数据
            public function change_name_by_id($dId,$name){
                  $this->update($dId,array(
                       ‘dName‘ => $name
                  ));
                }
            //删除数据
            public function delete_by_id($dId){
                   $this->delete($dId);
                }
            //取数据区间
            public function get_last_name(){
                   return $this -> range(0,5,‘DESC‘);
                }

     }
?>

用法(控制器):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    header("content-type:text/html;charset=utf-8");
    //调用插件模型
    $dId 100;
    $name "2121312";
    //C::t(‘#licai#test_db‘)->add_name($name);
    //C::t(‘#licai#test_db‘)->change_name_by_id(‘2‘,$name);
    //C::t(‘#licai#test_db‘)->delete_by_id($dId);
    //$data = C::t(‘#licai#test_db‘)->fetch($dId);取单条数据
    //print_r($data);
    //$data = C::t(‘#licai#test_db‘)->fetch_all(array(1,2,5));取多条数据
    //print_r($data);
    //$data = C::t(‘#licai#test_db‘)->count();计算数据
    //print_r($data);
    $data = C::t(‘#licai#test_db‘)->get_last_name();
    print_r($data);
?>

模型基类其他方法介绍

方法名 方法作用
truncate() 清空数据表
optimize() 优化数据表
checkpk 检查主键是否设置
fetch_all_field() 取出所有字段
getTable() 获取表名称

用法

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    header("content-type:text/html;charset=utf-8");
    //调用插件模型
    $dId 100;
    $name "2121312";
    //C::t(‘#licai#test_db‘)->truncate();//清空数据表
    //C::t(‘#licai#test_db‘)->optimize();
    //C::t(‘#licai#test_db‘)->checkpk();//检查是否设置pk值主键
    //$data =  C::t(‘#licai#test_db‘)->fetch_all_field();//取出所有字段
    //print_r($data);
    //$data =  C::t(‘#licai#test_db‘)->getTable();//获取表名称
    //print_r($data);
























































































































































以上是关于Discuz!X3.1数据库的操作的主要内容,如果未能解决你的问题,请参考以下文章

Discuz!X3.1数据库的操作

Discuz!X3.1后台操作技巧(整合)

Discuz! X3.1直接进入云平台列表的方法

discuz X3.1 关于分表 和 分表数据迁移

Discuz!X3.1标签使用

Discuz X3.1 论坛修改的方法(门户的修改)