DB
class DB
Global database interface, complete with static methods.
Use this class for interacting with the database.
Constants
USE_ANSI_SQL |
This constant was added in SilverStripe 2.4 to indicate that SQL-queries should now use ANSI-compatible syntax. The most notable affect of this change is that table and field names should be escaped with double quotes and not backticks |
Properties
static string | $lastQuery | The last SQL query run. |
Methods
Get the global database connection.
Retrieves the schema manager for the current database
Builds a sql query with the specified connection
Retrieves the connector object for the current database
Set an alternative database in a browser cookie, with the cookie lifetime set to the browser session.
Get the name of the database in use
Determines if the name is valid, as a security measure against setting arbitrary databases.
Connect to a database.
Returns true if a database connection has been attempted.
Helper function for generating a list of parameter placeholders for the given argument(s)
No description
Execute the given SQL parameterised query with the specified arguments
Execute a complex manipulation on the database.
Get the autogenerated ID from the previous INSERT query.
Check if the connection to the database is active.
Create the database and connect to it. This can be called if the initial database connection is not successful because the database does not exist.
Create a new table.
Create a new field on a table.
Generate the following table in the database, modifying whatever already exists as necessary.
No description
Generate the given field on the table, modifying whatever already exists as necessary.
Generate the given index in the database, modifying whatever already exists as necessary.
If the given table exists, move it out of the way by renaming it to obsolete(tablename).
See {@link SS_Database->dontRequireField()}.
Checks a table's integrity and repairs it if necessary.
Return the number of rows affected by the previous operation.
Returns a list of all tables in the database.
Get a list of all the fields for the given table.
Enable supression of database messages.
Show a message about database alteration
Details
at line 48
static
set_conn(SS_Database $connection, $name = 'default')
Set the global database connection.
Pass an object that's a subclass of SS_Database. This object will be used when {@link DB::query()} is called.
at line 55
static
setConn(SS_Database $connection, $name = 'default')
deprecated
deprecated since version 4.0 Use DB::set_conn instead
at line 67
static SS_Database
get_conn(string $name = 'default')
Get the global database connection.
at line 76
static
getConn($name = 'default')
deprecated
deprecated since version 4.0 Use DB::get_conn instead
at line 88
static DBSchemaManager
get_schema(string $name = 'default')
Retrieves the schema manager for the current database
at line 102
static string
build_sql(SQLExpression $expression, array $parameters, string $name = 'default')
Builds a sql query with the specified connection
at line 119
static DBConnector
get_connector(string $name = 'default')
Retrieves the connector object for the current database
at line 137
static
set_alternative_database_name($name = null)
Set an alternative database in a browser cookie, with the cookie lifetime set to the browser session.
This is useful for integration testing on temporary databases.
There is a strict naming convention for temporary databases to avoid abuse:
Note that the database will be set on the next request. Set it to null to revert to the main database.
at line 177
static
get_alternative_database_name()
Get the name of the database in use
at line 206
static Boolean
valid_alternative_database_name(String $name)
Determines if the name is valid, as a security measure against setting arbitrary databases.
at line 226
static SS_Database
connect($databaseConfig, $label = 'default')
Connect to a database.
Given the database configuration, this method will create the correct subclass of {@link SS_Database}.
at line 256
static
connection_attempted()
Returns true if a database connection has been attempted.
In particular, it lets the caller know if we're still so early in the execution pipeline that we haven't even tried to connect to the database yet.
at line 263
static
getConnect($parameters)
deprecated
deprecated since version 4.0 DB::getConnect was never implemented and is obsolete
at line 273
static SS_Query
query(string $sql, int $errorLevel = E_USER_ERROR)
Execute the given SQL query.
at line 288
static string|null
placeholders(array|integer $input, string $join = ', ')
Helper function for generating a list of parameter placeholders for the given argument(s)
at line 306
static string
inline_parameters(string $sql, array $parameters)
at line 362
static SS_Query
prepared_query(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)
Execute the given SQL parameterised query with the specified arguments
at line 410
static
manipulate(array $manipulation)
Execute a complex manipulation on the database.
A manipulation is an array of insert / or update sequences. The keys of the array are table names, and the values are map containing 'command' and 'fields'. Command should be 'insert' or 'update', and fields should be a map of field names to field values, including quotes. The field value can also be a SQL function or similar.
Example:
array(
// Command: insert
"table name" => array(
"command" => "insert",
"fields" => array(
"ClassName" => "'MyClass'", // if you're setting a literal, you need to escape and provide quotes
"Created" => "now()", // alternatively, you can call DB functions
"ID" => 234,
),
"id" => 234 // an alternative to providing ID in the fields list
),
// Command: update
"other table" => array(
"command" => "update",
"fields" => array(
"ClassName" => "'MyClass'",
"LastEdited" => "now()",
),
"where" => "ID = 234",
"id" => 234 // an alternative to providing a where clause
),
)
You'll note that only one command on a given table can be called. That's a limitation of the system that's due to it being written for {@link DataObject::write()}, which needs to do a single write on a number of different tables.
at line 419
static int
get_generated_id($table)
Get the autogenerated ID from the previous INSERT query.
at line 426
static
getGeneratedID($table)
deprecated
deprecated since version 4.0 Use DB::get_generated_id instead
at line 436
static boolean
is_active()
Check if the connection to the database is active.
at line 443
static
isActive()
deprecated
deprecated since version 4.0 Use DB::is_active instead
at line 456
static boolean
create_database(string $database)
Create the database and connect to it. This can be called if the initial database connection is not successful because the database does not exist.
at line 463
static
createDatabase($connect, $username, $password, $database)
deprecated
deprecated since version 4.0 Use DB::create_database instead
at line 480
static string
create_table($table, $fields = null, $indexes = null, $options = null, $advancedOptions = null)
Create a new table.
at line 489
static
createTable($table, $fields = null, $indexes = null, $options = null)
deprecated
deprecated since version 4.0 Use DB::create_table instead
at line 500
static
create_field(string $table, string $field, string $spec)
Create a new field on a table.
at line 507
static
createField($table, $field, $spec)
deprecated
deprecated since version 4.0 Use DB::create_field instead
at line 527
static
require_table(string $table, string $fieldSchema = null, string $indexSchema = null, boolean $hasAutoIncPK = true, string $options = null, array $extensions = null)
Generate the following table in the database, modifying whatever already exists as necessary.
at line 537
static
requireTable($table, $fieldSchema = null, $indexSchema = null, $hasAutoIncPK = true, $options = null, $extensions = null)
deprecated
deprecated since version 4.0 Use DB::require_table instead
at line 551
static
require_field(string $table, string $field, string $spec)
Generate the given field on the table, modifying whatever already exists as necessary.
at line 558
static
requireField($table, $field, $spec)
deprecated
deprecated since version 4.0 Use DB::require_field instead
at line 570
static
require_index(string $table, string $index, string|boolean $spec)
Generate the given index in the database, modifying whatever already exists as necessary.
at line 577
static
requireIndex($table, $index, $spec)
deprecated
deprecated since version 4.0 Use DB::require_index instead
at line 587
static
dont_require_table(string $table)
If the given table exists, move it out of the way by renaming it to obsolete(tablename).
at line 594
static
dontRequireTable($table)
deprecated
deprecated since version 4.0 Use DB::dont_require_table instead
at line 605
static
dont_require_field(string $table, string $fieldName)
See {@link SS_Database->dontRequireField()}.
at line 612
static
dontRequireField($table, $fieldName)
deprecated
deprecated since version 4.0 Use DB::dont_require_field instead
at line 623
static boolean
check_and_repair_table($table)
Checks a table's integrity and repairs it if necessary.
at line 630
static
checkAndRepairTable($table)
deprecated
deprecated since version 4.0 Use DB::check_and_repair_table instead
at line 640
static integer
affected_rows()
Return the number of rows affected by the previous operation.
at line 647
static
affectedRows()
deprecated
deprecated since version 4.0 Use DB::affected_rows instead
at line 658
static array
table_list()
Returns a list of all tables in the database.
The table names will be in lower case.
at line 665
static
tableList()
deprecated
deprecated since version 4.0 Use DB::table_list instead
at line 677
static array
field_list(string $table)
Get a list of all the fields for the given table.
Returns a map of field name => field spec.
at line 684
static
fieldList($table)
deprecated
deprecated since version 4.0 Use DB::field_list instead
at line 692
static
quiet()
Enable supression of database messages.
at line 702
static
alteration_message(string $message, string $type = "")
Show a message about database alteration