Doctrine_Export drivers provide an easy database portable way of altering existing database tables.

NOTE: if you only want to get the generated sql (and not execute it) use Doctrine_Export::alterTableSql()

openConnection(\$dbh); \$a = array('add' => array('name' => array('type' => 'string', 'length' => 255))); \$conn->export->alterTableSql('mytable', \$a); // On mysql this method returns: // ALTER TABLE mytable ADD COLUMN name VARCHAR(255) ?>"); ?>

Doctrine_Export::alterTable() takes two parameters:

string $name
name of the table that is intended to be changed.
array $changes
associative array that contains the details of each type of change that is intended to be performed. The types of changes that are currently supported are defined as follows: The value of each entry of the array should be set to another associative array with the properties of the fields to that are meant to be changed as array entries. These entries should be assigned to the new values of the respective properties. The properties of the fields should be the same as defined by the Doctrine parser. $a = array('name' => 'userlist', 'add' => array( 'quota' => array( 'type' => 'integer', 'unsigned' => 1 ) ), 'remove' => array( 'file_limit' => array(), 'time_limit' => array() ), 'change' => array( 'name' => array( 'length' => '20', 'definition' => array( 'type' => 'text', 'length' => 20 ) ) ), 'rename' => array( 'sex' => array( 'name' => 'gender', 'definition' => array( 'type' => 'text', 'length' => 1, 'default' => 'M' ) ) ) ); $dbh = new PDO('dsn','username','pw'); $conn = Doctrine_Manager::getInstance()->openConnection($dbh); $conn->export->alterTable('mytable', $a);