Метаданные базы данных
Метаданные таблиц
Эти функции позволяют получить информацию о таблицах.
Список таблиц в вашей базе данных
$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()
Возвращает массив, содержащий имена полей. Этот запрос можно вызвать двумя способами:
-
Вы можете указать имя таблицы и вызвать его из
$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