table

table方法主要用于指定操作的數(shù)據(jù)表。

用法

一般情況下,操作模型的時候系統(tǒng)能夠自動識別當(dāng)前對應(yīng)的數(shù)據(jù)表,所以,使用table方法的情況通常是為了:

  1. 切換操作的數(shù)據(jù)表;
  2. 對多表進行操作;

例如:

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

文檔
目錄

深色
模式

切換
寬度