ThinkPHP6.0 資料庫
ThinkPHP6 資料庫
ThinkPHP6 資料庫與模型運算已獨立為
ThinkORM函式庫
要使用Db類別必須使用門面方式(
think\facade\Db
)呼叫#資料庫操作統一入口:
Db::
一、資料庫管理軟體
1,phpMyAdmin(網頁資料庫管理)
2,Navicat for MySql(windows軟體資料庫管理)
二、建立資料庫
1、管理員表
CREATE TABLE `shop_admin` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
`account` varchar(50) NOT NULL COMMENT '帳號',
#',# `password` char(32) NOT NULL COMMENT '密碼',###### `name` varchar(50) NOT NULL COMMENT '姓名',###### `status` tinyint(1) unsigned NOT NOT NULL DEFAULT '1' COMMENT '狀態1開啟2關閉',###### `add_time` int(10) unsigned NOT NULL COMMENT '新增時間',###### PRIMARY KEY (`uid`)## ####) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='後台管理員';###############INSERT INTO `shop_admin` VALUES (1, 'ouyangke' , 'e10adc3949ba59abbe56e057f20f883e', '歐陽克', 1, 1576080000);#########2、商品分類表##########DROP TABLE IF EXISTS ``##########白; ##CREATE TABLE `shop_cat` (###### `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',###### `name` varchar(50) NOT NULL COMMENT '分類名' ,###### `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '狀態1開啟2關閉',###### PRIMARY KEY (`id`)######) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分類表';###############INSERT INTO `shop_cat` VALUES (1, '女裝', 1);## ####INSERT INTO `shop_cat` VALUES (2, '男裝', 1);######INSERT INTO `shop_cat` VALUES (3, '孕產', 1);######INSERT INTO `shop_cat` VALUES (4, '童裝', 1);######INSERT INTO `shop_cat` VALUES (5, '電視', 1);#######INSERT INTO `shop_cat` VALUES ( 6, '手機', 1);######INSERT INTO `shop_cat` VALUES (7, '電腦', 1);#########3、商品表####### ###CREATE TABLE `shop_goods` (###### `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ' 商品ID',###### `cat` int(10) unFAUL 1' COMMENT '分類ID',###### `title` varchar(200) NOT NULL COMMENT '商品標題',###### `price` double(10,2) unsigned NOT NULL COMMENT '價格',###### `discount` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '折扣',###4、選單表`stock` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '庫存',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '狀態1開啟 1開啟狀態1開啟刪除',
`add_time` int(10) unsigned NOT NULL COMMENT '新增時間',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT= 20 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
##INSERT INTO `shop_goods` VALUES (1, 1, '雲朵般輕盈的仙女裙高級珠收腰長裙氣質無袖洋裝', 279.99, 0, 1100, 1, 1576080000);INSERT INTO `shop_goods` VALUES (2, 1, '高冷禦姐風燈芯絨a字禦女裙女秋冬年新款收腰顯瘦復古裙子', 255.90, 0, 100, 1, 1576080000);
CREATE TABLE `shop_menu` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `title` varchar(50) NOT NULL COMMENT '選單名稱', `fid ` int(10) NOT NULL COMMENT '父ID', `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '狀態1開啟2關閉',## PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='左側選單表';
#INSERT INTO `shop_menu ` VALUES (1, '商品管理', 0, 1);INSERT INTO `shop_menu` VALUES (2, '商品清單', 1, 1);
INSERT INTO `shop_menu ` VALUES (3, '商品分類', 1, 1);
INSERT INTO `shop_menu` VALUES (4, '使用者管理', 0, 1);
INSERT INTO `shop_menu ` VALUES (5, '使用者列表', 4, 1);
INSERT INTO `shop_menu` VALUES (6, '購物車', 4, 1);
INSERT INTO `shop_menu ` VALUES (7, '使用者地址', 4, 1);
INSERT INTO `shop_menu` VALUES (8, '訂單管理', 4, 1);
INSERT INTO `shop_menu ` VALUES (9, '後台管理', 0, 1);
INSERT INTO `shop_menu` VALUES (10, '管理員清單', 9, 1);
INSERT INTO ` shop_menu` VALUES (11, '個人中心', 9, 1);
INSERT INTO `shop_menu` VALUES (12, '左側選單', 9, 1);
#三、執行原生MySql
1、
query方法用於執行MySql 查詢操作
execute# $ query = Db::query("SELECT * FROM `shop_goods` where status=1");
print_r($query);
#}
#2 、
方法用於執行MySql 新增和修改操作
$execute = Db::execute("INSERT INTO `shop_goods` VALUES (3, 1, '2019秋冬新款時尚簡約純羊絨加厚圓領羊絨長裙顯瘦氣質連身裙女', 1179.00, 0, 200, 1, 1576080000)");
############################################################################################################################################################### print_r($execute);###$execute = Db::execute("UPDATE `shop_goods` set `price`='1100' where `id`=3 ");
print_r($execute);
}
四、查詢
##1、單一資料查詢find#find
方法查詢結果不存在,回傳null,否則回傳結果陣列
public function index(){2、多條資料查詢select$find = Db::table('shop_goods') ->find(5); print_r($find);}
#select
方法查詢結果是一個二維數組,如果結果不存在,回傳空數組
public function index(){ $select = Db::table('shop_goods')->select(); print_r($select);}3、查詢某個欄位的值value
value
方法查詢結果不存在,回傳null
public function index(){4、查詢某一列的值column$value = Db::table('shop_goods')->value('title'); print_r($ value);}
- ##column
方法查詢結果不存在,回傳空數組
$column = Db::table('shop_goods')-> column('title');print_r($column);
$column = Db::table('shop_goods')->column('title','id') ;
print_r($column);
}
五、新增
1、新增一條資料insert
- #insert
方法加入資料成功傳回新增成功的條數,通常情況回傳1
$data = ['cat'=>'1','title'=>'日系小浪漫與溫暖羊毛針織拼接網紗百褶中長收腰洋裝' ,'price'=>'1598.35','add_time'=>1576080000];$insert = Db::table('shop_goods')->insert($data);
################################################' ### print_r($insert);######}#########2、新增一條資料insertGetId################insertGetId ###方法加入資料成功回傳新增資料的自增主鍵##################public function index(){######### $data = ['cat '=>'1','title'=>'針織毛衣連身裙2019秋冬新款氣質寬鬆羊毛長袖中長款休閒打底裙女','price'=>'690.00','add_time'= >1576080000];###
$insert = Db::table('shop_goods')->insertGetId($data);
print_r($insert);
}
3、新增多條資料insertAll
insertAll
方法加入資料成功回傳新增成功的條數
public function index(){
$data = [
['cat'=>'1','title'=>'秋冬加厚洋裝女超長版寬鬆羊絨衫高領套頭過膝毛衣百搭針織長裙','price'=>'658.00','add_time'=>1576080000],
[' cat'=>'1','title'=>'2019新款秋冬慵懶風寬鬆毛衣針織連身裙復古港味網紅兩件套','price'=>'408.00','add_time'= >1576080000],
['cat'=>'2','title'=>'男士長袖t卹秋季圓領黑白體卹T 純色上衣服打底衫男裝',' price'=>'99.00','add_time'=>1576080000]
];
$insert = Db::table('shop_goods')->insertAll($data );
print_r($insert);
}
六、修改
#1、修改資料update
update
方法傳回影響資料的條數,沒有修改任何資料回傳0
#public function index(){
$data = ['price'=>'68'];
$update = Db::table('shop_goods')->where('id',8)-> ;update($data);
print_r($update);
}
2、自增inc
#inc
方法自增加一個欄位的值
public function index(){
$inc = Db::table ('shop_goods')->where('id',5)->inc('stock')->update();
print_r($inc);
# # 字段的值增加5
$inc = Db::table('shop_goods')->where('id',6)->inc('stock',5)->update ();
print_r($inc);
}
3、自減dec
dec
方法自減一個欄位的值
#public function index(){
# 欄位的值減去1
$dec = Db::table('shop_goods')->where('id',7)->dec('stock')->update();
# print_r($dec);
# 欄位的值減去5
$dec = Db::table('shop_goods')->where('id',8)-> ;dec('stock',5)->update();
print_r($dec);
}
#七、刪除
1、刪除資料delete
delete
方法傳回影響資料的條數,沒有刪除回傳0
#public function index(){
# 根據條件刪除資料
$delete = Db::table('shop_goods')->where('id',1)->delete();
print_r($ delete);
# 刪除主鍵為2的資料
$delete = Db::table('shop_goods')->delete(2);
print_r( $delete);
# 刪除整表資料
$delete = Db::table('shop_goods')->delete(true);
print_r($ delete);
}
2、軟刪除useSoftDelete
業務資料不建議真實刪除數據, TP系統提供了軟體刪除機制
public function index(){
# 軟體刪除
$delete = Db::table ('shop_goods')->useSoftDelete('status',3)->delete();
print_r($delete);
- #八、其他操作(自學)
public function index(){ # 新增資料 $data = ['cat'=>'2', 'title'=>'美特斯邦威七分牛仔褲女2018夏季新中腰修身洗水牛仔褲商場款','price'=>'49.90','add_time'=>1576080000];# # $data = ['price'=>'99.00','id'=>3]; $save = Db::table('shop_goods')->save($data) ;$save = Db::table('shop_goods')->save($data); print_r($save); # 修改資料
- print_r($save);}#########備註:增刪查改是常規作業######9、資料集### #########Thinkphp提供了許多處理資料集的方法###
方法 | 描述 |
#toArray | #轉換為陣列 |
isEmpty | 是否為空白 |
#all | ##所有資料|
##merge | |
diff | |
# flip | |
intersect | |
keys | 傳回資料中的所有鍵名稱 |
pop | 刪除資料中的最後一個元素 |
shift | 刪除資料中的第一個元素 |
unshift | 在資料開頭插入一個元素 |
each | 給資料的每個元素執行回呼 |
#filter | 用回呼函數過濾資料中的元素 |
column | 傳回資料中的指定欄位 |
sort | #對資料排序 |
指定欄位排序 | |
#將資料打亂 | |
截取資料中的一部分 | |
用回呼函數處理陣列中的元素 | |
根據欄位條件篩選陣列中的元素 | |
Like查詢篩選元素 | |
Not Like過濾元素 | |
IN查詢篩選陣列中的元素 |
#十、範例controller程式碼公共函數index(){
$select = Db::table('shop_goods')->select();
if($select - >isEmpty()){
echo '未找到資料';
}
print_r($select->toArray());
##}
namespace app\controller;use think\facade\View; class Index{ public function index(){ $title = '商城';# $login = '歐陽克'; $login = '歐陽克'; ## $menu = Db::table('shop_menu')->where('fid',0)->select();view程式碼:index.html##{include file="public/head" /}## $left = $menu->toArray( );
foreach($left as &$left_v){
$left_v['lists'] = Db::table('shop_menu')->where('fid', $left_menu')->where('fid', $left_menu')->where('fid', $left_menu')->where('fid', $left_menu. ])->select();
}
# $list = Db::table('shop_goods')->select();
## list $right = $list ->toArray(); foreach($right as &$right_v){# $right_v['cat'] = Db::table( 'shop_cat')->where(' id',$right_v['cat'])->value('name'); } View::assign([## 標題 View::assign([
## 標題 " $title, '登入' => $login, '左' => $left, '右' => $right ]); return View::fetch(); }#}
#{include file="public/left" /}
####
;商品清單
#
<table class="layui-table">
<thead>
<tr<## <tr<..## ;/th>
<th>商品標題</th>
<th>原價< /th>
<th>折扣</th>
<th>庫存</th> ;
<th>狀態</th>
th>操作</th>
</tr>
</thead>
</tbody>
<) do>
<) 的>
## <dbody>>="#name<tr> <)td>{$right_v.id}; <td>{$right_v.title}< /td> <td>{$right_v.cat}</td> o;
# # <td>{$right_v.discount}</td> {if $right_v.discount!=0}# {$ right_v.price*($right_v.discount/10)} {else/}#
## {/if}</td>
{if $right_v['status']== 1}開啟{else/}關掉{/if}
{$right_v.add_time|date='Y-m-d'} ##o # .>
</tr>
# ist}###
{include file="public/bottom" /}
#