1. 程式人生 > >Discuz!X3.1數據庫的操作(三)

Discuz!X3.1數據庫的操作(三)

extends tro chang 思想 str 清空 optimize eply 跳過

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數據庫的操作(三)