Spec-Zone.ru › CodeIgniter 4

Метаданные базы данных

  • Метаданные таблиц
    • Список таблиц в вашей базе данных
    • Определение наличия таблицы
  • Метаданные полей
    • Список полей в таблице
    • Определение наличия поля в таблице
    • Получение метаданных о поле
    • Список индексов в таблице

Метаданные таблиц

Эти функции позволяют получить информацию о таблицах.

Список таблиц в вашей базе данных

$db->listTables();

Возвращает массив, содержащий имена всех таблиц в базе данных, к которой вы подключены. Пример:

$tables = $db->listTables();

foreach ($tables as $table) {
    echo $table;
}

Примечание

Некоторые драйверы имеют дополнительные системные таблицы, которые исключаются из этого возвращаемого значения.

Определение наличия таблицы

$db->tableExists();

Иногда полезно узнать, существует ли определённая таблица, прежде чем выполнять операцию с ней. Возвращает булево значение true/false. Пример использования:

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

Примечание

Замените table_name на имя искомой таблицы.

Метаданные полей

Список полей в таблице

$db->getFieldNames()

Возвращает массив, содержащий имена полей. Этот запрос можно вызвать двумя способами:

  1. Вы можете указать имя таблицы и вызвать его из $db->object:

    $fields = $db->getFieldNames('table_name');
    
    foreach ($fields as $field) {
        echo $field;
    }
    

2. Вы можете получить имена полей, связанные с любым запросом, вызвав функцию из объекта результата запроса:

$query = $db->query('SELECT * FROM some_table');

foreach ($query->getFieldNames() as $field) {
    echo $field;
}

Определение наличия поля в таблице

$db->fieldExists()

Иногда полезно узнать, существует ли определённое поле, прежде чем выполнять действие. Возвращает булево значение true/false. Пример использования:

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

Примечание

Замените field_name на имя столбца, и table_name на имя таблицы, которые вы ищете.

Получение метаданных о поле

$db->getFieldData()

Возвращает массив объектов, содержащих информацию о поле.

Иногда полезно собрать имена полей или другие метаданные, такие как тип столбца, максимальная длина и т. д.

Примечание

Не все базы данных предоставляют метаданные.

Пример использования:

$fields = $db->getFieldData('table_name');

foreach ($fields as $field) {
    echo $field->name;
    echo $field->type;
    echo $field->max_length;
    echo $field->primary_key;
}

Если вы уже выполнили запрос, вы можете использовать объект результата вместо указания имени таблицы:

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

Следующие данные доступны из этой функции, если это поддерживается вашей базой данных:

  • name - имя столбца
  • max_length - максимальная длина столбца
  • primary_key - 1, если столбец является первичным ключом
  • type - тип столбца

Список индексов в таблице

$db->getIndexData()

Возвращает массив объектов, содержащих информацию об индексах.

Пример использования:

$keys = $db->getIndexData('table_name');

foreach ($keys as $key) {
    echo $key->name;
    echo $key->type;
    echo $key->fields; // array of field names
}

Типы ключей могут быть уникальными для используемой вами базы данных. Например, MySQL вернёт одно из значений primary, fulltext, spatial, index или unique для каждого ключа, связанного с таблицей.

$db->getForeignKeyData()

Возвращает массив объектов, содержащих информацию о внешних ключах.

Пример использования:

$keys = $db->getForeignKeyData('table_name');

foreach ($keys as $key) {
    echo $key->constraint_name;
    echo $key->table_name;
    echo $key->column_name;
    echo $key->foreign_table_name;
    echo $key->foreign_column_name;
}

Поля объекта могут быть уникальны для используемой вами базы данных. Например, SQLite3 не возвращает данные о именах столбцов, но имеет дополнительное поле sequence для определений составных внешних ключей.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/database/metadata.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API