table
table方法主要用于指定操作的數(shù)據(jù)表。
用法
一般情況下,操作模型的時(shí)候系統(tǒng)能夠自動(dòng)識(shí)別當(dāng)前對(duì)應(yīng)的數(shù)據(jù)表,所以,使用table方法的情況通常是為了:
- 切換操作的數(shù)據(jù)表;
- 對(duì)多表進(jìn)行操作;
例如:
Db::table('think_user')->where('status>1')->select();
也可以在table方法中指定數(shù)據(jù)庫(kù),例如:
Db::table('db_name.think_user')->where('status>1')->select();
table方法指定的數(shù)據(jù)表需要完整的表名,但可以采用下面的方式簡(jiǎn)化數(shù)據(jù)表前綴的傳入,例如:
Db::table('__USER__')->where('status>1')->select();
會(huì)自動(dòng)獲取當(dāng)前模型對(duì)應(yīng)的數(shù)據(jù)表前綴來(lái)生成 think_user
數(shù)據(jù)表名稱。
需要注意的是table方法不會(huì)改變數(shù)據(jù)庫(kù)的連接,所以你要確保當(dāng)前連接的用戶有權(quán)限操作相應(yīng)的數(shù)據(jù)庫(kù)和數(shù)據(jù)表。 切換數(shù)據(jù)表后,系統(tǒng)會(huì)自動(dòng)重新獲取切換后的數(shù)據(jù)表的字段緩存信息。
如果需要對(duì)多表進(jìn)行操作,可以這樣使用:
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)勢(shì)是可以避免因?yàn)楸砻完P(guān)鍵字沖突而出錯(cuò)的情況。
文檔最后更新時(shí)間:2018-04-26 09:35:32
未解決你的問(wèn)題?請(qǐng)到「問(wèn)答社區(qū)」反饋你遇到的問(wèn)題