要使用Db類必須使用門面方式(`think\facade\Db`)調用助手函數在5.2被移除了
第二種方式是通過容器獲取:`$db=app("db");`
>[danger]新版的數據庫和模型操作已經獨立為[`ThinkORM`](https://github.com/top-think/think-orm)庫,默認安裝應用的時候會自動安裝,如果你不需要使用該`ORM`庫的話,可以單獨卸載`topthink/think-orm`后安裝其它的`ORM`庫。
~~~
Query基類類BaseQuery
__call(string $method, array $args) 利用__call方法實現一些特殊的Model方法
newQuery(): BaseQuery 創建一個新的查詢對象
getConnection():ConnectionInterface 獲取當前的數據庫Connection對象
name($name):this 指定默認的數據表名(不含前綴)
getName(): string 獲取當前的數據表名稱
getConfig(string $name = ''):mixed 獲取數據庫的配置參數
getTable(string $name = ''):mixed 得到當前或者指定名稱的數據表
setFieldType(array $type):this 設置字段類型信息
getLastSql(): string 獲取最近一次查詢的sql語句
getNumRows(): int 獲取返回或者影響的記錄數
getLastInsID(string $sequence = null) 獲取最近插入的ID
value(string $field, $default = null):mixed 得到某個字段的值
column(string $field, string $key = ''): array 得到某個列的數組
union($union, bool $all = false):this 查詢SQL組裝 union
unionAll($union):this 查詢SQL組裝 union all
field($field):this 指定查詢字段
withoutField($field):this 指定要排除的查詢字段
tableField($field, string $tableName, string $prefix = '', string $alias = ''):this 指定其它數據表的查詢字段
data(array $data):this 設置數據
removeOption(string $option = ''):this 去除查詢參數
limit(int $offset, int $length = null):this 指定查詢數量
page(int $page, int $listRows = null): 指定分頁
table($table):this 指定當前操作的數據表
order($field, string $order = ''):this 指定排序 order('id','desc') 或者 order(['id'=>'desc','create_time'=>'desc'])
paginate($listRows = null, $simple = false): Paginator 分頁查詢
paginateX($listRows = null, string $key = null, string $sort = null): Paginator 根據數字類型字段進行分頁查詢(大數據)
more(int $limit, $lastId = null, string $key = null, string $sort = null): array 根據最后ID查詢更多N個數據
cache($key = true, $expire = null, $tag = null):this 查詢緩存
lock($lock = false):this 指定查詢lock
alias($alias):this 指定數據表別名
master(bool $readMaster = true):this 設置從主服務器讀取數據
strict(bool $strict = true):this 設置是否嚴格檢查字段名
sequence(string $sequence = null):this 設置自增序列名
json(array $json = [], bool $assoc = false):this 設置JSON字段信息
pk($pk):this 指定數據表主鍵
getOptions(string $name = ''):mixed 獲取當前的查詢參數
setOption(string $option, $value):this 設置當前的查詢參數
via(string $via = ''):this 設置當前字段添加的表別名
save(array $data = [], bool $forceInsert = false):integer 保存記錄 自動判斷insert或者update
insert(array $data = [], bool $getLastInsID = false):integer|string 插入數據 參數2為true返回自增主鍵
insertGetId(array $data):integer|string 插入記錄并獲取自增ID
insertAll(array $dataSet = [], int $limit = 0): int 批量插入記錄
selectInsert(array $fields, string $table): int 通過Select方式插入記錄
update(array $data = []): int 更新記錄
delete($data = null): int 刪除記錄
select($data = null): Collection 查找記錄
find($data = null):array|Model|null 查找單條記錄
parseOptions(): array 分析表達式(可用于查詢或者寫入操作)
parseUpdateData(&$data): bool 分析數據是否存在更新條件
parsePkWhere($data): void 把主鍵值轉換為查詢條件 支持復合主鍵
project權限
options(array $options):this 查詢參數批量賦值
getModelUpdateCondition(array $options):?? 獲取模型的更新條件
Query類 Query extends BaseQuery
orderRaw($field, array $bind = []):this 表達式方式指定Field排序
fieldRaw(string $field):this 表達式方式指定查詢字段
orderField(string $field, array $values, string $order = ''):this 指定Field排序 orderField('id',[1,2,3],'desc')
orderRand():this 隨機排序
exp(string $field, string $value):this 使用表達式設置數據
tableRaw(string $table):this 表達式方式指定當前操作的數據表
query(string $sql, array $bind = []): array 執行查詢 返回數據集
execute(string $sql, array $bind = []): int 執行語句
fetchSql(bool $fetch = true):$this|Fetch 獲取執行的SQL語句而不進行實際的查詢 為true 返回sql
batchQuery(array $sql = []): bool 批處理執行SQL語句(批處理的指令都認為是execute操作)
using($using):this USING支持 用于多表刪除
procedure(bool $procedure = true):this 存儲過程調用
group($group):this 指定group查詢
having(string $having):this 指定having查詢
distinct(bool $distinct = true):this 指定distinct查詢
force(string $force):this 指定強制索引
comment(string $comment):this 查詢注釋
replace(bool $replace = true):this 設置是否REPLACE
partition($partition):this 設置當前查詢所在的分區
duplicate($duplicate):this 設置DUPLICATE
extra(string $extra):this 設置查詢的額外參數
buildSql(bool $sub = true): string 創建子查詢SQL
getPk():string|array 獲取當前數據表的主鍵
autoinc(string $autoinc):this 指定數據表自增主鍵
getAutoInc():string|null 獲取當前數據表的自增主鍵
inc(string $field, float $step = 1):this 字段值增長
dec(string $field, float $step = 1):this 字段值減少
getQueryGuid($data = null): string 獲取當前的查詢標識
getPdo(): PDOStatement 執行查詢但只返回PDOStatement對象
cursor($data = null):\Generator 使用游標查找記錄
chunk(int $count, callable $callback, $column = null, string $order = 'asc'): bool 分批數據返回處理
~~~
**BaseQuery 引用了如下trait類**
use concern\TimeFieldQuery;//時間查詢
use concern\AggregateQuery;//聚合查詢
use concern\ModelRelationQuery;//模型及關聯查詢
use concern\ResultOperation;//查詢數據處理
use concern\Transaction;//事務支持
use concern\WhereQuery;//條件支持
**Query引用了如下trait類**
use concern\JoinAndViewQuery;//JOIN和VIEW查詢
use concern\ParamsBind;//參數綁定
use concern\TableFieldInfo;//數據字段信息
## **trait JoinAndViewQuery:JOIN和VIEW查詢**
\vendor\topthink\think-orm\src\db\concern\JoinAndViewQuery.php
```
join($join="關聯的表名:", string $condition = 條件:null, string $type = 'JOIN類型:INNER', array $bind = 參數綁定:[]):this 查詢SQL組裝 join
leftJoin($join, string $condition = null, array $bind = []) LEFT JOIN
rightJoin($join, string $condition = null, array $bind = []) RIGHT JOIN
fullJoin($join, string $condition = null, array $bind = []) FULL JOIN
view($join="數據表:", $field = 查詢字段:true, $on = JOIN條件:null, string $type = 'JOIN類型:INNER', array $bind = 參數綁定:[]) 指定JOIN查詢字段
//示例:
Db::view('User', 'id,name')
->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id', 'LEFT')
->view('Score', 'score', 'Score.user_id=Profile.id', 'RIGHT')
->where('score', '>', 80)
->select();
//User.name,Profile.truename,Profile.phone,Profile.email,Score.score FROM think_user User LEFT JOIN think_profile Profile ON Profile.user_id=User.id RIGHT JOIN think_socre Score ON Score.user_id=Profile.id WHERE Score.score > 80
```
- 空白目錄
- php語法結構
- 安裝與更新
- 開啟調試模式及代碼跟蹤器
- 架構
- 源碼分析
- 應用初始化
- 請求流程
- 中間件源碼分析
- 請求處理源碼分析
- Request源碼分析
- 模板編譯流程
- 路由與請求流程
- 容器
- 獲取目錄位置
- 入口文件
- 多應用模式及URL訪問
- 依賴注入與容器
- 容器屬性及方法
- Container
- App
- facade
- 中間件(middleware)
- 系統服務
- extend 擴展類庫
- 筆記
- 配置
- env配置定義及獲取
- 配置文件的配置獲取
- 單應用模式-(配置)文件目錄結構(默認)
- 多應用模式(配置)文件目錄結構(配置文件)
- 配置文件
- 應用配置:app.php
- 緩存配置: cache.php
- 數據庫配置:database.php
- 路由和URL配置:route.php
- Cookie配置:cookie.php
- Session配置:session.php
- 命令行配置:console.php
- 多語言配置:lang.php
- 日志配置:log.php
- 頁面Trace配置:trace.php
- 磁盤配置: filesystem.php
- 中間件配置:middleware.php
- 視圖配置:view.php
- 改成用yaconf配置
- 事件
- 例子:省略事件類的demo
- 例子2:完整事件類
- 例子3:事件訂閱,監聽多個事件
- 解析
- 路由
- 路由定義
- 路由地址
- 變量規則
- MISS路由
- URL生成
- 閉包支持
- 路由參數
- 路由中間件
- 路由分組
- 資源路由
- 注解路由
- 路由綁定
- 域名路由
- 路由緩存
- 跨域路由
- 控制器
- 控制器定義
- 空控制器、空操作
- 空模塊處理
- RESTFul資源控制器
- 控制器中間件
- 請求對象Request(url參數)
- 請求信息
- 獲取輸入變量($_POST、$_GET等)
- 請求類型的獲取與偽裝
- HTTP頭信息
- 偽靜態
- 參數綁定
- 請求緩存
- 響應對象Response
- 響應輸出
- 響應參數
- 重定向
- 文件下載
- 錯誤頁面的處理辦法
- 應用公共文件common.php
- 模型
- 模型定義及常規屬性
- 模型數據獲取與模型賦值
- 查詢
- 數據集
- 增加
- 修改
- 刪除
- 條件
- 查詢范圍scope
- 獲取器
- 修改器
- 搜索器
- 軟刪除
- 模型事件
- 關聯預載入
- 模型關聯
- 一對一關聯
- 一對多關聯
- 多對多關聯
- 自動時間戳
- 事務
- 數據庫
- 查詢構造器
- 查詢合集
- 子查詢
- 聚合查詢
- 時間查詢
- 視圖查詢(比join簡單)
- 獲取查詢參數
- 快捷方法
- 動態查詢
- 條件查詢
- 打印sql語句
- 增
- 刪
- 改
- 查
- 鏈式操作
- 查詢表達式
- 分頁查詢
- 原生查詢
- JSON字段
- 鏈接數據庫配置
- 分布式數據庫
- 查詢事件
- Db獲取器
- 事務操作
- 存儲過程
- Db數據集
- 數據庫驅動
- 視圖
- 模板
- 模板配置
- 模板位置
- 模板渲染
- 模板變量與賦值(assign)
- 模板輸出替換
- url生成
- 模板詳解
- 內置標簽
- 三元運算
- 變量輸出
- 函數輸出
- Request請求參數
- 模板注釋及原樣輸出
- 模板繼承
- 模板布局
- 原生PHP
- 模板引擎
- 視圖過濾
- 視圖驅動
- 驗證
- 驗證進階之最終版
- 錯誤和日志
- 異常處理
- 日志處理
- 調試
- 調試模式
- Trace調試
- SQL調試
- 變量調試
- 遠程調試
- 雜項
- 緩存
- Session
- Cookie
- 多語言
- 上傳
- 擴展說明
- N+1查詢
- TP類庫
- 擴展類庫
- 數據庫遷移工具
- Workerman
- think助手工具庫
- 驗證碼
- Swoole
- request
- app
- Response
- View
- Validate
- Config
- 命令行
- 助手函數
- 升級指導(功能的添加與刪除說明)
- siyucms
- 開始
- 添加頁面流程
- 列表頁加載流程
- 彈出框
- 基礎控制器
- 基礎模型
- 快速構建
- 表單form構建
- 表格table構建
- MakeBuilder
- 前端組件
- 日期組件
- layer 彈層組件
- Moment.js 日期處理插件
- siyucms模板布局
- 函數即其變量
- 前端頁面
- $.operate.方法
- $.modal.方法:彈出層
- $.common.方法:通用方法
- 被cms重寫的表格options
- 自定義模板
- 搜索框
- 自定義form表單
- 獲取表單搜索參數并組裝為url字符串