function views_database_connector_get_database_schema_mysql in Views Database Connector 8
Same name and namespace in other branches
- 7 views_database_connector.views.inc \views_database_connector_get_database_schema_mysql()
Gathers appropriate information from MySQL driver type databases.
1 call to views_database_connector_get_database_schema_mysql()
- add_table_to_database_list in ./
views_database_connector.views.inc - Adds table list to the database list based on driver.
File
- ./
views_database_connector.views.inc, line 220 - Responsible for hooking views to add each database and its tables.
Code
function views_database_connector_get_database_schema_mysql($key) {
// Load the appropriate data type groups.
$types = views_database_connector_get_data_types();
// Switch to database in question.
Database::setActiveConnection($key);
// The database in question.
$new_db = Database::getConnection('default', $key);
// Get a list of the tables in this database.
$tables = $new_db
->query('SHOW TABLES;');
// Switch back to the main database.
Database::setActiveConnection('default');
$tablelist = [];
// Fetch a row, each with a table name.
while ($row = $tables
->fetchAssoc()) {
// This is the one of two database formats that can have whacky table
// names due to using information_schema. We have the ability to
// check on columns without the PDO table substitution problem.
foreach ($row as $v) {
// Switch to database in question.
Database::setActiveConnection($key);
// Fetch column names and their data type from said table.
$q = 'SELECT column_name AS column_name, data_type AS data_type FROM ';
$q .= 'information_schema.columns WHERE table_name = :table;';
$cols = $new_db
->query($q, [
':table' => $v,
]);
// Switch back to the main database.
Database::setActiveConnection('default');
$collist = [];
// Fetch a row, each with a column name.
while ($r = $cols
->fetchAssoc()) {
$t = 'broken';
// Add column to column list.
if (isset($r['column_name'])) {
foreach ($types as $type => $matches) {
foreach ($matches as $match) {
if (stristr($r['data_type'], $match)) {
$t = $type;
}
}
}
$collist[] = [
$t,
$r['column_name'],
];
}
}
// Add table and its columns to the table list.
$tablelist[] = [
$v,
$collist,
];
}
}
return $tablelist;
}