ThinkPHP6.0 資料庫鍊式操作
ThinkPHP6 資料庫鍊式操作
#資料庫提供的鍊式操作方法,可以有效的提高資料訪問的程式碼清晰度和開發效率,並且支援所有的
CURD
操作帶*標識的表示支援多次呼叫
連貫運算 | 作用 | 支援的參數類型 |
where* | 用於AND查詢 | 字串、陣列和物件 |
table | 用於定義要操作的資料表名稱 | 字串和陣列 |
#name | 用於定義要操作的資料表名稱 | 字串 |
field* | 用於定義要查詢的欄位(支援欄位排除) | 字串和陣列 |
order* | 用於對結果排序 | #字串和陣列 |
limit | 用來限制查詢結果數 | 字串和數字 |
page | 用於查詢分頁(內部會轉換成limit ) | 字串與數字 |
一、表達式查詢
表達式是SQL語句的條件
表達式不分大小寫
表達式寫在where裡
#表達式 | ##意思查詢方法 | |
等於 | ||
不等於 | ||
#大於 | ||
大於等於 | ||
##小於 | ||
小於等於 | ||
模糊查詢 | whereLike/whereNotLike | |
#(不在)區間查詢 | whereBetween/whereNotBetween | |
(不在)IN 查詢 | whereIn/whereNotIn | |
[NOT] NULL | 查詢欄位是否(不)是NULL |
where
查詢
where方法在鍊式操作方法裡面是最常用的方法,可以完成包含普通查詢、表達式查詢、快速查詢、區間查詢、組合查詢在內的條件查詢操作
# 等於(=)
$select = Db::table('shop_goods')- >where('id','=','1')->select();
print_r($select->toArray());
## 不等於(<>)
$select = Db::table('shop_goods')->where('id','<>',' 2')->select();
print_r($select->toArray());
# 大於(>)
$select = Db::table('shop_goods')->where('id','>','3')->select();
#print_r( $select->toArray());
# 大於等於(>=)
$select = Db::table('shop_goods' )->where('id','>=','4')->select();
print_r($select->toArray());
# 小於(<)
$select = Db::table('shop_goods')->where('id','<','5 ')->select();
print_r($select->toArray());
# 小於等於(<=)
$select = Db::table('shop_goods')->where('id','<=','6')->select();
# print_r($select->toArray());
## 多where
$select = Db::table('shop_goods')
->where('id','>','3')
->#here('id','<','8');',#8');
->select();print_r($select->toArray());# LIKE $select = Db::table('shop_goods')->where('title','like','%洋裝%')->select();print_r($select-> ;toArray());
# NOT LIKE$select = Db::table('shop_goods')->where('title' ,'not like','%洋裝%')->select();print_r($select->toArray());
# BETWEEN$select = Db::table('shop_goods')->where('id','between','6,10')->select();print_r($select->toArray());
# NOT BETWEEN$select = Db::table('shop_goods ')->where('id','not between',[6,10])->select();print_r($select->toArray());
# IN$select = Db::table('shop_goods')->where('id','in','4,7, 10')->select();print_r($select->toArray());
# NOT IN
$select = Db::table('shop_goods')->where('id','not in',[4,7,10])->select();
# print_r($select->toArray());
二、資料表
1、table 和name
# 必須完整資料庫名
$select = Db::table('shop_goods')->where('id','10')->select();
print_r($select-> ;toArray());
# 資料庫未設定前綴
$select = Db::name('shop_goods')->where('id','11')-> ;select();
print_r($select->toArray());
# 資料庫設定前綴,無前綴存取
$select = Db::name ('list')->where('id','12')->select();
print_r($select->toArray());
#2、資料庫前綴
資料庫設定database.php
三、回傳值1、return [
'connections' => [
'mysql' => [
// 資料庫表格字首
'prefix' =## 'prefix' =## 'prefix'
## ] ]];
field
- #field 方法主要作用是標識要傳回或操作的字段,可以用來查詢和寫入操作
- 所有的查詢方法都可以使用field方法
# 字串$select = Db::table('shop_goods') ->field( 'title,price,discount as d') ->where('status',1) print # ->select(## print # ->select()## print # ->)lect();##select_print ->toArray());# 陣列
$select = Db::table('shop_goods') - >field([ 'title', 'price',## ])
->where('status',1)
->select();
print_r($select-- ->select();
print_r($select--gt;
添加,只能加入這幾個欄位
# 多field
$data = [ 'title' = > '新商品', 'price' => 50, 'discount' => 8, 'add_time' => 1576080000##];$insert = Db::table('shop_goods')->field('title')
->field('price')
## gt ;field('add_time') ->insert($data);print_r($insert);
print_r($insert);
- ##n>
$select = Db::table('shop_goods')
- ; // ->
# ; ('*')
->where('status',1)
->select();##print_r($selectprint_r($select();#pto; ));
2、withoutField
- #withoutField 方法作用排除資料表中的欄位 #
Db::table('shop_goods')->withoutField('id')->select();
fieldRaw
Db::table('shop_goods')->fieldRaw('id,sum(price)')->select();#四、排序1、order
方法用於對操作的結果排序或優先限制預設正序
asc 正序
desc 倒序->)lect();# -> $select->toArray());$select = Db::table ('shop_goods')
->field('title,price,id')
->where('status',1)#> # ; order('price','DESC')
->order('id','DESC')
- 2、
- orderRaw
方法中使用mysql函數
$select = Db::table( 'shop_goods')
->. ("field(title,'price','discount','stock')")
->select();
print_r($select->toArray());toArray()); ;
五、分頁###############limit ###方法主要用於指定查詢和操作的數量######### #######$select = Db::table('shop_goods')###### ->field('title,price,id')###### e -' status',1)###### ->order('price','DESC')###->limit(3)
->select();
print_r($select->#Array());
#print_r($select->#Array());
$select = Db::table('shop_goods')
->field('title,price,id')
,id')
-> ',1)
->order('price','DESC')
->limit(0,5)
lecto ) ;print_r($select->toArray());
方法主要用於分頁查詢#page
$select = Db::table('shop_goods') ->field('title,price,id') >where('status',1) ->order('price','DESC') ->page(1,5)##page(1,5)## ->select();print_r($select->toArray());六、聚合查詢
#功能 | |
統計數量,參數是要統計的欄位名稱(可選) | |
取得最大值,參數是要統計的欄位名稱(必須) |
#七、搜尋、排序範例controller代碼// 統計數量,參數是要統計的欄位名稱(可選)
$select = Db::table('shop_goods')->count();
print_r($select);
// 取得最大值,參數是要統計的欄位名稱(必須)
$select = Db ::table('shop_goods')->max('id');
print_r($select);
##// 取得最小值,參數是要統計的欄位名稱(必須)$select = Db::table('shop_goods')->min('id');print_r($select) ;
// 取得平均值,參數是要統計的欄位名稱(必須)$select = Db::table('shop_goods') ->avg('id');print_r($select);
#// 取得總數,參數是要統計的欄位名稱(必須)$select = Db::table('shop_goods')->sum('id');print_r($select);
public function index(){ $title = '商城'; $ login = '歐陽克'; # 左側選單 $menu = Db::table('shop_menu')->where('fid',0)->select (); $left = $menu->toArray(); foreach($left as &$left_v){ $left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select(); } # 右側列表 $param = Request::param(); if(isset($param['status']) && $param['status'] == 1){ $where['status'] = 1; }else if(isset($param['status']) && $param['status'] == 2){$where['status'] = 2; }else{ $where = true;
o
o##o#o#o#o#o#o#list ::table('shop_goods') ->where($where) ->order(' id DESC') ->select(); $right = $list->toArray();# $right = $list->toArray();# $right = $list->toArray();# 問題 foreach($right as$. { $right_v['cat'] = Db::table('shop_cat')->where('id',$right_v['cat'])->value('name') ; } View::assign([ 'title' => $title, 1 'login' => $login, ###'左' => $left,
'右' => $right,
'狀態' => isset($param['status']) ? $param['status'] : null
]);
return View::fetch();
}
#view程式碼