Doctrine 1.2.4
Doctrine_DataDict_Oracle Class Reference

Inherits Doctrine_DataDict.

Public Member Functions

 getConnection ()
 
 getModuleName ()
 
 getNativeDeclaration (array $field)
 
 getPortableDeclaration (array $field)
 
 parseBoolean ($value)
 

Detailed Description

Definition at line 31 of file Oracle.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_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_Oracle::getNativeDeclaration ( array  $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 55 of file Oracle.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 'string':
case 'array':
case 'object':
case 'gzip':
case 'char':
case 'varchar':
$length = !empty($field['length']) ? $field['length'] : false;
$fixed = ((isset($field['fixed']) && $field['fixed']) || $field['type'] == 'char') ? true : false;
$unit = $this->conn->getParam('char_unit');
$unit = ! is_null($unit) ? ' '.$unit : '';
if ($length && $length <= $this->conn->getParam('varchar2_max_length')) {
return $fixed ? 'CHAR('.$length.$unit.')' : 'VARCHAR2('.$length.$unit.')';
}
case 'clob':
return 'CLOB';
case 'blob':
return 'BLOB';
case 'integer':
case 'int':
$length = (!empty($field['length'])) ? $field['length'] : false;
if ( $length && $length <= $this->conn->number_max_precision) {
if ($length <= 1) {
return 'NUMBER(3)'; // TINYINT, unsigned max. 256
} elseif ($length == 2) {
return 'NUMBER(5)'; // SMALLINT, unsigend max. 65.536
} elseif ($length == 3) {
return 'NUMBER(8)'; // MEDIUMINT, unsigned max. 16.777.216
} elseif ($length == 4) {
return 'NUMBER(10)'; // INTEGER, unsigend max. 4.294.967.296
} elseif ($length <= 8) {
return 'NUMBER(20)'; // BIGINT, unsigend max. 18.446.744.073.709.551.616
} else {
return 'INTEGER';
}
}
return 'INTEGER';
case 'boolean':
return 'NUMBER(1)';
case 'date':
case 'time':
case 'timestamp':
return 'DATE';
case 'float':
case 'double':
return 'NUMBER';
case 'decimal':
$scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine_Core::ATTR_DECIMAL_PLACES);
return 'NUMBER(*,'.$scale.')';
default:
}
return $field['type'] . (isset($field['length']) ? '('.$field['length'].')':null);
}
Doctrine_DataDict_Oracle::getPortableDeclaration ( array  $field)

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

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

Definition at line 126 of file Oracle.php.

{
if ( ! isset($field['data_type'])) {
throw new Doctrine_DataDict_Exception('Native oracle definition must have a data_type key specified');
}
$dbType = strtolower($field['data_type']);
$type = array();
$length = $unsigned = $fixed = null;
if ( ! empty($field['data_length'])) {
$length = (int)$field['data_length'];
}
if ( ! isset($field['column_name'])) {
$field['column_name'] = '';
}
switch ($dbType) {
case 'integer':
case 'pls_integer':
case 'binary_integer':
$type[] = 'integer';
if ($length == '1') {
$type[] = 'boolean';
if (preg_match('/^(is|has)/i', $field['column_name'])) {
$type = array_reverse($type);
}
}
break;
case 'varchar':
case 'varchar2':
case 'nvarchar2':
$fixed = false;
case 'char':
case 'nchar':
$type[] = 'string';
if ($length == '1') {
$type[] = 'boolean';
if (preg_match('/^(is|has)/i', $field['column_name'])) {
$type = array_reverse($type);
}
}
if ($fixed !== false) {
$fixed = true;
}
break;
case 'date':
case 'timestamp':
$type[] = 'timestamp';
$length = null;
break;
case 'float':
$type[] = 'float';
break;
case 'number':
if ( ! empty($field['data_scale'])) {
$type[] = 'decimal';
} else {
$type[] = 'integer';
if ((int)$length == '1') {
$type[] = 'boolean';
if (preg_match('/^(is|has)/i', $field['column_name'])) {
$type = array_reverse($type);
} else {
$length = 1; //TINYINT
}
} elseif ( ! is_null($length) && (int)$length <= 3) { // TINYINT
$length = 1;
} elseif ( ! is_null($length) && (int)$length <= 5) { // SMALLINT
$length = 2;
} elseif ( ! is_null($length) && (int)$length <= 8) { // MEDIUMINT
$length = 3;
} elseif ( ! is_null($length) && (int)$length <= 10) { // INT
$length = 4;
} elseif ( ! is_null($length) && (int)$length <= 20) { //BIGINT
$length = 8;
}
}
break;
case 'long':
$type[] = 'string';
case 'clob':
case 'nclob':
$type[] = 'clob';
break;
case 'blob':
case 'raw':
case 'long raw':
case 'bfile':
$type[] = 'blob';
$length = null;
break;
case 'rowid':
case 'urowid':
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: