Schema
Learn about Opis Database Schema
This version of the library is no longer maintained. Please consider upgrading to the latest release
At this moment all the features presented here are available only for MySQL, SQLServer, PostgreSQL and SQLite database systems.
Introduction
Opis Database provides an unified API across all database supported systems that allows developers to manipulate tables or to obtain other informations about a database.
Accessing the database associated schema is done by calling the schema method.
use Opis\Database\Database;
use Opis\Database\Connection;
$connection = new Connection('mysql:host=localhost;dbname=test', 'username', 'password');
$db = new Database($connection);
$schema = $db->schema();
Table information
Obtaining a list of tables from the current database is done by using the getTables method.
$tables = $db->schema()->getTables();
foreach ($tables as $table) {
//do something
}
By default the list of tables obtained by calling this method is cached for performance reasons.
If you want to obtain an uncached list of tables then pass true as an argument to the getTables method.
$tables = $db->schema()->getTables(true);
foreach ($tables as $table) {
//do something
}
You can check if a specific table exists by passing the table name
as the first argument to the hasTable method.
if ($db->schema()->hasTable('users')) {
//do something
}
This method accepts as an optional second argument a boolean value that indicates
if the checking for the table’s existence should be done by using an uncached list of tables.
The default value of this optional argument is false.
if ($db->schema()->hasTable('users', true)) {
//do something
}
Getting the columns of a table
Getting a table’s columns list is done by using the getColumns method.
The method takes as an argument the name of the table.
$columns = $db->schema()->getColumns('users');
foreach ($columns as $column) {
//do something
}
If you want to obtain an uncached list of columns then pass true as an argument
to the getColumns method.
$columns = $db->schema()->getColumns('users', true);
foreach ($columns as $column) {
//do something
}