データベースメタデータ¶
テーブルメタデータ¶
これらの関数を使用すると、テーブル情報を取得できます。
データベース内のテーブルのリスト¶
$db->listTables()¶
現在接続しているデータベース内のすべてのテーブルの名前を含む配列を返します。例
<?php
$db = db_connect();
$tables = $db->listTables();
foreach ($tables as $table) {
echo $table;
}
注
一部のドライバーには、この戻り値から除外される追加のシステムテーブルがあります。
テーブルが存在するかどうかの判定¶
$db->tableExists()¶
特定のテーブルに対して操作を実行する前に、そのテーブルが存在するかどうかを知ることが役立つ場合があります。ブール値 true/false を返します。使用例
<?php
$db = db_connect();
if ($db->tableExists('table_name')) {
// some code...
}
注
table_name を検索するテーブルの名前に置き換えます。
フィールドメタデータ¶
テーブル内のフィールドのリスト¶
$db->getFieldNames()¶
フィールド名を含む配列を返します。このクエリは2つの方法で呼び出すことができます
1. テーブル名を指定して、
$db->object
から呼び出すことができます<?php $db = db_connect(); $fields = $db->getFieldNames('table_name'); foreach ($fields as $field) { echo $field; }
2. クエリ結果オブジェクトから関数を呼び出すことで、実行したクエリに関連付けられたフィールド名を取得できます
<?php
$db = db_connect();
$query = $db->query('SELECT * FROM some_table');
foreach ($query->getFieldNames() as $field) {
echo $field;
}
テーブルにフィールドが存在するかどうかの判定¶
$db->fieldExists()¶
特定のアクションを実行する前に、特定のフィールドが存在するかどうかを知ることが役立つ場合があります。ブール値 true/false を返します。使用例
<?php
$db = db_connect();
if ($db->fieldExists('field_name', 'table_name')) {
// some code...
}
注
field_name を検索する列の名前に、table_name を検索するテーブルの名前に置き換えます。
フィールドメタデータの取得¶
$db->getFieldData()¶
フィールド情報を含むオブジェクトの配列を返します。
列の型、最大長など、フィールド名やその他のメタデータを収集することが役立つ場合があります。
注
すべてのデータベースがメタデータを提供するわけではありません。
使用例
<?php
$db = db_connect();
$fields = $db->getFieldData('table_name');
foreach ($fields as $field) {
echo $field->name;
echo $field->type;
echo $field->max_length;
echo $field->primary_key;
}
すでにクエリを実行している場合は、テーブル名を指定する代わりに結果オブジェクトを使用できます
<?php
$db = db_connect();
$query = $db->query('YOUR QUERY');
$fields = $query->getFieldData();
データベースでサポートされている場合、この関数から次のデータが利用可能です
name - 列名
type - 列の型
max_length - 列の最大長
primary_key - 列が主キーの場合は整数
1
(複数の主キーがある場合でも、すべて整数1
)、そうでない場合は整数0
(このフィールドは現在、MySQL および SQLite3 でのみ利用可能です)nullable - 列が NULL 可能である場合はブール値
true
、そうでない場合はブール値false
default - デフォルト値
注
v4.4.0 以降、SQLSRV は nullable
をサポートしています。
テーブル内のインデックスのリスト¶
$db->getIndexData()¶
インデックス情報を含むオブジェクトの配列を返します。
使用例
<?php
$db = db_connect();
$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 のいずれかを返します。
SQLite3 は、PRIMARY
という名前の擬似インデックスを返します。しかし、それは特別なインデックスであり、SQL コマンドで使用することはできません。
$db->getForeignKeyData()¶
外部キー情報を含むオブジェクトの配列を返します。
使用例
<?php
$db = db_connect();
$keys = $db->getForeignKeyData('table_name');
foreach ($keys as $key => $object) {
echo $key === $object->constraint_name;
echo $object->constraint_name;
echo $object->table_name;
echo $object->column_name[0]; // array
echo $object->foreign_table_name;
echo $object->foreign_column_name[0]; // array
echo $object->on_delete;
echo $object->on_update;
echo $object->match;
}
外部キーは、tableprefix_table_column1_column2_foreign
という命名規則を使用します。Oracle は、わずかに異なる接尾辞 _fk
を使用します。