table
table方法主要用于指定操作的數(shù)據(jù)表。
用法
一般情況下,操作模型的時候系統(tǒng)能夠自動識別當(dāng)前對應(yīng)的數(shù)據(jù)表,所以,使用table方法的情況通常是為了:
- 切換操作的數(shù)據(jù)表;
- 對多表進行操作;
例如:
Db::table('think_user')->where('status>1')->select();
也可以在table方法中指定數(shù)據(jù)庫,例如:
Db::table('db_name.think_user')->where('status>1')->select();
table方法指定的數(shù)據(jù)表需要完整的表名,但可以采用下面的方式簡化數(shù)據(jù)表前綴的傳入,例如:
Db::table('__USER__')->where('status>1')->select();
會自動獲取當(dāng)前模型對應(yīng)的數(shù)據(jù)表前綴來生成 think_user
數(shù)據(jù)表名稱。
需要注意的是table方法不會改變數(shù)據(jù)庫的連接,所以你要確保當(dāng)前連接的用戶有權(quán)限操作相應(yīng)的數(shù)據(jù)庫和數(shù)據(jù)表。 切換數(shù)據(jù)表后,系統(tǒng)會自動重新獲取切換后的數(shù)據(jù)表的字段緩存信息。
如果需要對多表進行操作,可以這樣使用:
Db::field('user.name,role.title')
->table('think_user user,think_role role')
->limit(10)->select();
為了盡量避免和mysql的關(guān)鍵字沖突,可以建議使用數(shù)組方式定義,例如:
Db::field('user.name,role.title')
->table(['think_user'=>'user','think_role'=>'role'])
->limit(10)->select();
使用數(shù)組方式定義的優(yōu)勢是可以避免因為表名和關(guān)鍵字沖突而出錯的情況。
文檔最后更新時間:2018-04-26 09:35:32
未解決你的問題?請到「問答社區(qū)」反饋你遇到的問題