Doctrine 1.2.4
Doctrine_DataDict_Mssql Class Reference

Inherits Doctrine_DataDict.

Public Member Functions

 getConnection ()
 
 getIntegerDeclaration ($name, $field)
 
 getModuleName ()
 
 getNativeDeclaration ($field)
 
 getPortableDeclaration ($field)
 
 parseBoolean ($value)
 

Detailed Description

Definition at line 34 of file Mssql.php.

Member Function Documentation

Doctrine_Connection_Module::getConnection ( )
inherited

getConnection returns the connection object this module uses

Returns
Doctrine_Connection

Definition at line 68 of file Module.php.

{
return $this->conn;
}
Doctrine_DataDict_Mssql::getIntegerDeclaration (   $name,
  $field 
)

Obtain DBMS specific SQL code portion needed to declare an integer type field to be used in statements like CREATE TABLE.

Parameters
string$namename the field to be declared.
string$fieldassociative array with the name of the properties of the field being declared as array indexes. Currently, the types of supported field properties are as follows:

unsigned Boolean flag that indicates whether the field should be declared as unsigned integer if possible.

default Integer value to be used as default for this field.

notnull Boolean flag that indicates whether this field is constrained to not be set to null.

Returns
string DBMS specific SQL code portion that should be used to declare the specified field.

Definition at line 238 of file Mssql.php.

{
$default = $autoinc = '';
if ( ! empty($field['autoincrement'])) {
$autoinc = ' identity';
} elseif (array_key_exists('default', $field)) {
if ($field['default'] === '') {
$field['default'] = empty($field['notnull']) ? null : 0;
}
$value = (is_null($field['default'])
? 'NULL'
: $this->conn->quote($field['default']));
// Name the constraint if a name has been supplied
if (array_key_exists('defaultConstraintName', $field)) {
$default .= ' CONSTRAINT ' . $field['defaultConstraintName'];
}
$default .= ' DEFAULT ' . $value;
}
$notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ' NULL';
//$unsigned = (isset($field['unsigned']) && $field['unsigned']) ? ' UNSIGNED' : '';
// MSSQL does not support the UNSIGNED keyword
$unsigned = '';
$comment = (isset($field['comment']) && $field['comment'])
? " COMMENT " . $this->conn->quote($field['comment'], 'text') : '';
$name = $this->conn->quoteIdentifier($name, true);
return $name . ' ' . $this->getNativeDeclaration($field) . $unsigned
. $default . $notnull . $autoinc . $comment;
}
Doctrine_Connection_Module::getModuleName ( )
inherited

getModuleName returns the name of this module

Returns
string the name of this module

Definition at line 79 of file Module.php.

{
return $this->moduleName;
}
Doctrine_DataDict_Mssql::getNativeDeclaration (   $field)

Obtain DBMS specific SQL code portion needed to declare an text type field to be used in statements like CREATE TABLE.

Parameters
array$fieldassociative array with the name of the properties of the field being declared as array indexes. Currently, the types of supported field properties are as follows:

length Integer value that determines the maximum length of the text field. If this argument is missing the field should be declared to have the longest length allowed by the DBMS.

default Text value to be used as default for this field.

notnull Boolean flag that indicates whether this field is constrained to not be set to null.

Returns
string DBMS specific SQL code portion that should be used to declare the specified field.

Definition at line 59 of file Mssql.php.

{
if ( ! isset($field['type'])) {
throw new Doctrine_DataDict_Exception('Missing column type.');
}
switch ($field['type']) {
case 'enum':
$field['length'] = isset($field['length']) && $field['length'] ? $field['length']:255;
case 'array':
case 'object':
case 'text':
case 'char':
case 'varchar':
case 'string':
case 'gzip':
$length = !empty($field['length'])
? $field['length'] : false;
$fixed = ((isset($field['fixed']) && $field['fixed']) || $field['type'] == 'char') ? true : false;
return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$this->conn->varchar_max_length.')')
: (($length && $length <= $this->conn->varchar_max_length) ? 'VARCHAR('.$length.')' : 'TEXT');
case 'clob':
if ( ! empty($field['length'])) {
$length = $field['length'];
if ($length <= 8000) {
return 'VARCHAR('.$length.')';
}
}
return 'TEXT';
case 'blob':
if ( ! empty($field['length'])) {
$length = $field['length'];
if ($length <= 8000) {
return "VARBINARY($length)";
}
}
return 'IMAGE';
case 'integer':
case 'int':
return (isset($field['unsigned']) && $field['unsigned']) ? 'BIGINT' : 'INT';
case 'boolean':
return 'BIT';
case 'date':
return 'CHAR(' . strlen('YYYY-MM-DD') . ')';
case 'time':
return 'CHAR(' . strlen('HH:MM:SS') . ')';
case 'timestamp':
return 'CHAR(' . strlen('YYYY-MM-DD HH:MM:SS') . ')';
case 'float':
return 'FLOAT';
case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18;
$scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine_Core::ATTR_DECIMAL_PLACES);
return 'DECIMAL('.$length.','.$scale.')';
}
return $field['type'] . (isset($field['length']) ? '('.$field['length'].')':null);
}
Doctrine_DataDict_Mssql::getPortableDeclaration (   $field)

Maps a native array description of a field to a MDB2 datatype and length

Parameters
array$fieldnative field description
Returns
array containing the various possible types, length, sign, fixed

Definition at line 124 of file Mssql.php.

{
$db_type = preg_replace('/[\d\(\)]/','', strtolower($field['type']) );
$length = (isset($field['length']) && $field['length'] > 0) ? $field['length'] : null;
$type = array();
// todo: unsigned handling seems to be missing
$unsigned = $fixed = null;
if ( ! isset($field['name']))
$field['name'] = '';
switch ($db_type) {
case 'bit':
$type[0] = 'boolean';
break;
case 'tinyint':
case 'smallint':
case 'bigint':
case 'int':
$type[0] = 'integer';
if ($length == 1) {
$type[] = 'boolean';
}
break;
case 'date':
$type[0] = 'date';
break;
case 'datetime':
case 'timestamp':
case 'smalldatetime':
$type[0] = 'timestamp';
break;
case 'float':
case 'real':
case 'numeric':
$type[0] = 'float';
break;
case 'decimal':
case 'money':
case 'smallmoney':
$type[0] = 'decimal';
break;
case 'text':
case 'varchar':
case 'ntext':
case 'nvarchar':
$fixed = false;
case 'char':
case 'nchar':
$type[0] = 'string';
if ($length == '1') {
$type[] = 'boolean';
if (preg_match('/^[is|has]/', $field['name'])) {
$type = array_reverse($type);
}
} elseif (strstr($db_type, 'text')) {
$type[] = 'clob';
}
if ($fixed !== false) {
$fixed = true;
}
break;
case 'image':
case 'varbinary':
$type[] = 'blob';
$length = null;
break;
case 'uniqueidentifier':
$type[] = 'string';
$length = 36;
break;
case 'sql_variant':
case 'sysname':
case 'binary':
$type[] = 'string';
$length = null;
break;
default:
$type[] = $field['type'];
$length = isset($field['length']) ? $field['length']:null;
}
return array('type' => $type,
'length' => $length,
'unsigned' => $unsigned,
'fixed' => $fixed);
}
Doctrine_DataDict::parseBoolean (   $value)
inherited

parseBoolean parses a literal boolean value and returns proper sql equivalent

Parameters
string$valueboolean value to be parsed
Returns
string parsed boolean value

Definition at line 44 of file DataDict.php.

{
// parse booleans
if ($value == 'true') {
$value = 1;
} elseif ($value == 'false') {
$value = 0;
}
return $value;
}

The documentation for this class was generated from the following file: