`table`方法主要用于指定操作的數據表。
## 用法
一般情況下,操作模型的時候系統能夠自動識別當前對應的數據表,所以,使用`table`方法的情況通常是為了:
* 切換操作的數據表;
* 對多表進行操作;
例如:
~~~
Db::table('think_user')->where('status', 1)->select();
~~~
也可以在table方法中指定數據庫,例如:
~~~
Db::table('db_name.think_user')->where('status', 1)->select();
~~~
`table`方法指定的數據表需要完整的表名,但可以采用`name`方式簡化數據表前綴的傳入,例如:
~~~
Db::name('user')->where('status', 1)->select();
~~~
會自動獲取當前模型對應的數據表前綴來生成 `think_user` 數據表名稱。
需要注意的是`table`方法不會改變數據庫的連接,所以你要確保當前連接的用戶有權限操作相應的數據庫和數據表。
如果需要對多表進行操作,可以這樣使用:
~~~
Db::field('user.name,role.title')
->table('think_user user,think_role role')
->limit(10)->select();
~~~
為了盡量避免和mysql的關鍵字沖突,可以建議使用數組方式定義,例如:
~~~
Db::field('user.name,role.title')
->table([
'think_user'=>'user',
'think_role'=>'role'
])
->limit(10)->select();
~~~
使用數組方式定義的優勢是可以避免因為表名和關鍵字沖突而出錯的情況。
如果你的表名是特殊的子查詢構建的,建議使用`tableRaw`方法。
- 簡介
- 數據庫配置
- 分布式數據庫
- 查詢構造器
- 查詢數據
- 新增數據
- 更新數據
- 刪除數據
- 鏈式操作
- Where
- Table
- Alias
- Field
- Strict
- Limit
- Page
- Order
- Group
- Having
- Join
- Union
- Distinct
- Lock
- Cache
- Comment
- FetchSql
- Force
- Partition
- Replace
- FailException
- Extra
- Duplicate
- Sequence
- Procedure
- View
- 聚合查詢
- 分頁查詢
- 時間查詢
- 高級查詢
- 子查詢
- 原生查詢
- 事務操作
- 存儲過程
- 查詢事件
- JSON字段
- 模型
- 定義
- 新增
- 更新
- 刪除
- 查詢
- 查詢范圍
- 只讀字段
- JSON字段
- 自動時間寫入
- 獲取器
- 修改器
- 搜索器
- 類型轉換
- 模型輸出
- 模型事件
- 虛擬模型
- 關聯
- 一對一關聯
- 一對多關聯
- 遠程一對多
- 遠程一對一
- 多對多關聯
- 多態一對多
- 多態一對一
- 關聯預載入
- 關聯統計
- 關聯輸出
- SQL監聽
- 緩存機制
- 字段緩存
- 查詢緩存
- 擴展
- 自定義查詢類
- 自定義數據庫驅動