This document discusses using Doctrine Migrations to manage database schema changes. It begins by explaining the problems with manually migrating databases, then introduces Doctrine Migrations as a way to version and rollback schema changes. Key aspects covered include generating migrations from schema changes, the migration file format, and using Symfony commands to generate, migrate and rollback changes. It emphasizes keeping migrations focused and data migrations simple.
35. Migration Process
Migrate
Compare
Generate
schema.yml
Migration File
11
36. Migration Files
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
12
37. Migration Files
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
12
38. Migration Files
Used for upgrading
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
12
39. Migration Files
Used for upgrading
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
12
40. Migration Files
Used for upgrading
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
Used for downgrading
12
41. Migration Files
Used for upgrading
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
Used for downgrading
12
42. Migration Files
Used for upgrading
Table / Data Manipulation
class VersionXX extends Doctrine_Migration_Base
{
public function up()
{
$this->addColumn('blog_post', 'tags', 'string', '255', array(
));
}
public function down()
{
$this->removeColumn('blog_post', 'tags');
}
}
Used for downgrading
12
60. Migrations and sf CLI
symfony doctrine:generate-migrations-models
symfony doctrine:generate-migrations-db
symfony doctrine:generate-migrations-diff
symfony doctrine:migrate
16
61. Migrations and sf CLI
symfony doctrine:generate-migrations-models
symfony doctrine:generate-migrations-db
symfony doctrine:generate-migrations-diff
symfony doctrine:migrate
Available in other tasks, too
16
62. Migrations and sf CLI
symfony doctrine:generate-migrations-models
symfony doctrine:generate-migrations-db
symfony doctrine:generate-migrations-diff
symfony doctrine:migrate
Available in other tasks, too
Even works with plugins
16
63. Migrations and sf CLI
symfony doctrine:generate-migrations-models
symfony doctrine:generate-migrations-db
symfony doctrine:generate-migrations-diff
symfony doctrine:migrate
Available in other tasks, too
Even works with plugins
(only in sf, sorry Matthew :P)
16
64. Migrations and sf CLI
symfony doctrine:generate-migrations-models
17
65. Migrations and sf CLI
symfony doctrine:generate-migrations-models
Compares Model files and schema.yml
17
66. Migrations and sf CLI
symfony doctrine:generate-migrations-models
Compares Model files and schema.yml
Good when starting without schema
17
73. Migrations and sf CLI
symfony doctrine:generate-migrations-diff
Compares changed schema.yml and Model files
21
74. Migrations and sf CLI
symfony doctrine:generate-migrations-diff
Compares changed schema.yml and Model files
Good when already using Migrations
21
75. Migrating using sf CLI
symfony doctrine:migrate
symfony doctrine:build-model
symfony doctrine:build-filters
symfony doctrine:build-forms
22
76. Migrating using sf CLI
symfony doctrine:migrate
symfony doctrine:build-model
symfony doctrine:build-filters
symfony doctrine:build-forms
That‘s the obvious way
22
77. Migrating using sf CLI
symfony doctrine:migrate
symfony doctrine:build --all-classes
23
78. Migrating using sf CLI
symfony doctrine:migrate
symfony doctrine:build --all-classes
That‘s the nice way
23
79. Migrating using sf CLI
symfony doctrine:build --all-classes --and-migrate
24
80. Migrating using sf CLI
symfony doctrine:build --all-classes --and-migrate
That‘s the cool sf 1.3 way
24