CodeIgniter4 獲取元數(shù)據(jù)

2020-08-14 11:40 更新

表元數(shù)據(jù)

下面這些方法用于獲取表信息。

列出數(shù)據(jù)庫中的所有表

$db->listTables();

返回一個數(shù)組,包含當前連接數(shù)據(jù)庫的全部表名稱。例如:

  1. $tables = $db->listTables();
  2. foreach ($tables as $table)
  3. {
  4. echo $table;
  5. }

檢查表是否存在

$db->tableExists();

有時先檢查某個表是否存在再進行操作會比較有用, 返回布爾值 TRUE/FALSE. 例如:

  1. if ($db->tableExists('table_name'))
  2. {
  3. // some code...
  4. }

注解

使用你要查找的表名替換掉 table_name

字段元數(shù)據(jù)

列出表的所有字段

$db->getFieldNames()

返回包含字段名稱的數(shù)組,有兩種不同的調(diào)用方式:

  1. 你可以調(diào)用 $db->object 的方法獲取表的字段:

  1. $fields = $db->getFieldNames('table_name');
  2. foreach ($fields as $field)
  3. {
  4. echo $field;
  5. }

  1. 你可以調(diào)用任何查詢結(jié)果對象的方法獲取所有字段:

  1. $query = $db->query('SELECT * FROM some_table');
  2. foreach ($query->getFieldNames() as $field)
  3. {
  4. echo $field;
  5. }

檢查表中是否存在某字段

$db->fieldExists()

有時先確定某個字段是否存在再進行操作也比較有用, 該方法返回布爾值 TRUE/FALSE。 使用示例:

  1. if ($db->fieldExists('field_name', 'table_name'))
  2. {
  3. // some code...
  4. }

注解

field_name 替換為你要查找的字段名, 并且將 table_name 替換為你要查找的表的名稱

獲取字段的元數(shù)據(jù)

$db->getFieldData()

該方法返回一個包含字段信息的對象數(shù)組。

有時,收集字段名稱或相關(guān)的元數(shù)據(jù)會很有用,例如數(shù)據(jù)類型,最大長度等。

注解

并非所有的數(shù)據(jù)庫都支持元數(shù)據(jù)。

使用示例:

  1. $fields = $db->getFieldData('table_name');
  2. foreach ($fields as $field)
  3. {
  4. echo $field->name;
  5. echo $field->type;
  6. echo $field->max_length;
  7. echo $field->primary_key;
  8. }

如果你已經(jīng)進行了查詢,則可以使用結(jié)果對象而且不用提供表名:

  1. $query = $db->query("YOUR QUERY");
  2. $fields = $query->fieldData();

如果你的數(shù)據(jù)庫支持,則可以用此方法獲得以下數(shù)據(jù):

  • name - 字段名
  • max_length - 字段的最大長度
  • primary_key - 等于1的話表示此字段是主鍵
  • type - 字段的數(shù)據(jù)類型

獲取表的索引

$db->getIndexData()

返回一個包含索引信息的對象數(shù)組。

使用示例:

  1. $keys = $db->getIndexData('table_name');
  2. foreach ($keys as $key)
  3. {
  4. echo $key->name;
  5. echo $key->type;
  6. echo $key->fields; // 字段名的數(shù)組
  7. }

根據(jù)數(shù)據(jù)庫不同 type 會有所區(qū)別。 例如,MySQL會返回 primary、fulltext、spatial、index 或 unique 其中之一, 每個(索引)關(guān)聯(lián)一張表。

$db->getForeignKeyData()

返回一個包含外鍵信息的對象數(shù)組。

使用示例:

  1. $keys = $db->getForeignKeyData('table_name');
  2. foreach ($keys as $key)
  3. {
  4. echo $key->constraint_name;
  5. echo $key->table_name;
  6. echo $key->column_name;
  7. echo $key->foreign_table_name;
  8. echo $key->foreign_column_name;
  9. }

對象字段根據(jù)你用的數(shù)據(jù)庫會有不同,例如 SQLite3 不返回 column_name 字段,但會附加 sequence 字段用于解釋復合外鍵。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號