CI_DB_sqlite_forge Class Reference

Inheritance diagram for CI_DB_sqlite_forge:
Collaboration diagram for CI_DB_sqlite_forge:

List of all members.


Public Member Functions

 _create_database ()
 Create database.
 _drop_database ($name)
 Drop database.
 _create_table ($table, $fields, $primary_keys, $keys, $if_not_exists)
 Create Table.
 _drop_table ($table)
 Drop Table.
 _alter_table ($alter_type, $table, $column_name, $column_definition= '', $default_value= '', $null= '', $after_field= '')
 Alter table query.
 _rename_table ($table_name, $new_table_name)
 Rename a table.

Detailed Description

Definition at line 25 of file sqlite_forge.php.


Member Function Documentation

CI_DB_sqlite_forge::_alter_table ( alter_type,
table,
column_name,
column_definition = '',
default_value = '',
null = '',
after_field = '' 
)

Alter table query.

Generates a platform-specific query so that a table can be altered Called by add_column(), drop_column(), and column_alter(),

private

Parameters:
string the ALTER type (ADD, DROP, CHANGE)
string the column name
string the table name
string the column definition
string the default value
boolean should 'NOT NULL' be added
string the field after which we should add the new field
Returns:
object

Definition at line 207 of file sqlite_forge.php.

00208         {
00209                 $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
00210 
00211                 // DROP has everything it needs now.
00212                 if ($alter_type == 'DROP')
00213                 {
00214                         // SQLite does not support dropping columns
00215                         // http://www.sqlite.org/omitted.html
00216                         // http://www.sqlite.org/faq.html#q11
00217                         return FALSE;
00218                 }
00219 
00220                 $sql .= " $column_definition";
00221 
00222                 if ($default_value != '')
00223                 {
00224                         $sql .= " DEFAULT \"$default_value\"";
00225                 }
00226 
00227                 if ($null === NULL)
00228                 {
00229                         $sql .= ' NULL';
00230                 }
00231                 else
00232                 {
00233                         $sql .= ' NOT NULL';
00234                 }
00235 
00236                 if ($after_field != '')
00237                 {
00238                         $sql .= ' AFTER ' . $this->db->_protect_identifiers($after_field);
00239                 }
00240                 
00241                 return $sql;
00242                 
00243         }

CI_DB_sqlite_forge::_create_database (  ) 

Create database.

public

Parameters:
string the database name
Returns:
bool

Definition at line 34 of file sqlite_forge.php.

00035         {
00036                 // In SQLite, a database is created when you connect to the database.
00037                 // We'll return TRUE so that an error isn't generated
00038                 return TRUE;
00039         }

CI_DB_sqlite_forge::_create_table ( table,
fields,
primary_keys,
keys,
if_not_exists 
)

Create Table.

private

Parameters:
string the table name
array the fields
mixed primary key(s)
mixed key(s)
boolean should 'IF NOT EXISTS' be added to the SQL
Returns:
bool

Definition at line 75 of file sqlite_forge.php.

References CI_DB_forge::$fields, CI_DB_forge::$keys, and CI_DB_forge::$primary_keys.

00076         {
00077                 $sql = 'CREATE TABLE ';
00078                 
00079                 // IF NOT EXISTS added to SQLite in 3.3.0
00080                 if ($if_not_exists === TRUE && version_compare($this->_version(), '3.3.0', '>=') === TRUE)
00081                 {
00082                         $sql .= 'IF NOT EXISTS ';
00083                 }
00084                 
00085                 $sql .= $this->db->_escape_identifiers($table)."(";
00086                 $current_field_count = 0;
00087 
00088                 foreach ($fields as $field=>$attributes)
00089                 {
00090                         // Numeric field names aren't allowed in databases, so if the key is
00091                         // numeric, we know it was assigned by PHP and the developer manually
00092                         // entered the field information, so we'll simply add it to the list
00093                         if (is_numeric($field))
00094                         {
00095                                 $sql .= "\n\t$attributes";
00096                         }
00097                         else
00098                         {
00099                                 $attributes = array_change_key_case($attributes, CASE_UPPER);
00100                                 
00101                                 $sql .= "\n\t".$this->db->_protect_identifiers($field);
00102                                 
00103                                 $sql .=  ' '.$attributes['TYPE'];
00104         
00105                                 if (array_key_exists('CONSTRAINT', $attributes))
00106                                 {
00107                                         $sql .= '('.$attributes['CONSTRAINT'].')';
00108                                 }
00109         
00110                                 if (array_key_exists('UNSIGNED', $attributes) && $attributes['UNSIGNED'] === TRUE)
00111                                 {
00112                                         $sql .= ' UNSIGNED';
00113                                 }
00114         
00115                                 if (array_key_exists('DEFAULT', $attributes))
00116                                 {
00117                                         $sql .= ' DEFAULT \''.$attributes['DEFAULT'].'\'';
00118                                 }
00119         
00120                                 if (array_key_exists('NULL', $attributes) && $attributes['NULL'] === TRUE)
00121                                 {
00122                                         $sql .= ' NULL';
00123                                 }
00124                                 else
00125                                 {
00126                                         $sql .= ' NOT NULL';                    
00127                                 }
00128         
00129                                 if (array_key_exists('AUTO_INCREMENT', $attributes) && $attributes['AUTO_INCREMENT'] === TRUE)
00130                                 {
00131                                         $sql .= ' AUTO_INCREMENT';
00132                                 }
00133                         }
00134                         
00135                         // don't add a comma on the end of the last field
00136                         if (++$current_field_count < count($fields))
00137                         {
00138                                 $sql .= ',';
00139                         }
00140                 }
00141 
00142                 if (count($primary_keys) > 0)
00143                 {
00144                         $primary_keys = $this->db->_protect_identifiers($primary_keys);
00145                         $sql .= ",\n\tPRIMARY KEY (" . implode(', ', $primary_keys) . ")";
00146                 }
00147 
00148                 if (is_array($keys) && count($keys) > 0)
00149                 {
00150                         foreach ($keys as $key)
00151                         {
00152                                 if (is_array($key))
00153                                 {
00154                                         $key = $this->db->_protect_identifiers($key);   
00155                                 }
00156                                 else
00157                                 {
00158                                         $key = array($this->db->_protect_identifiers($key));
00159                                 }
00160                                 
00161                                 $sql .= ",\n\tUNIQUE (" . implode(', ', $key) . ")";
00162                         }
00163                 }
00164 
00165                 $sql .= "\n)";
00166 
00167                 return $sql;
00168         }

CI_DB_sqlite_forge::_drop_database ( name  ) 

Drop database.

private

Parameters:
string the database name
Returns:
bool

Definition at line 50 of file sqlite_forge.php.

00051         {
00052                 if ( ! @file_exists($this->db->database) OR ! @unlink($this->db->database))
00053                 {
00054                         if ($this->db->db_debug)
00055                         {
00056                                 return $this->db->display_error('db_unable_to_drop');
00057                         }
00058                         return FALSE;
00059                 }
00060                 return TRUE;
00061         }

CI_DB_sqlite_forge::_drop_table ( table  ) 

Drop Table.

Unsupported feature in SQLite

private

Returns:
bool

Definition at line 180 of file sqlite_forge.php.

00181         {
00182                 if ($this->db->db_debug)
00183                 {
00184                         return $this->db->display_error('db_unsuported_feature');
00185                 }
00186                 return array();
00187         }

CI_DB_sqlite_forge::_rename_table ( table_name,
new_table_name 
)

Rename a table.

Generates a platform-specific query so that a table can be renamed

private

Parameters:
string the old table name
string the new table name
Returns:
string

Definition at line 257 of file sqlite_forge.php.

00258         {
00259                 $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name)." RENAME TO ".$this->db->_protect_identifiers($new_table_name);
00260                 return $sql;
00261         }


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