РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1221 of 1361 menu

Команда doctrine:migrations:diff

Команда doctrine:migrations:diff сравнивает схему базы данных, описанную в сущностях Doctrine, с реальным состоянием базы данных и создаёт файл миграции с SQL-запросами для приведения базы к актуальному виду. Первым параметром можно передать имя миграции. Опция --filter-expression позволяет ограничить набор таблиц, а опция --formatted форматирует итоговый SQL.

Синтаксис

php bin/console doctrine:migrations:diff [name] [options]

Пример

Давайте создадим сущность Article с несколькими полями:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] #[ORMTable(name: 'article')] class Article { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private ?int $id = null; #[ORMColumn(type: 'string', length: 255)] private string $title = ''; #[ORMColumn(type: 'text', nullable: true)] private ?string $text = null; #[ORMColumn(type: 'boolean')] private bool $published = false; #[ORMColumn(type: 'datetime', nullable: true)] private ?DateTimeInterface $createdAt = null; public function getId(): ?int { return $this->id; } public function getTitle(): string { return $this->title; } public function setTitle(string $title): void { $this->title = $title; } } ?>

Теперь запустим команду для генерации миграции:

php bin/console doctrine:migrations:diff

Результат выполнения команды:

Generated new migration class to "migrations/Version20240101120000.php" To run just this migration for testing purposes, you can use migrations:execute --up 'DoctrineMigrationsVersion20240101120000' To revert the migration you can use migrations:execute --down 'DoctrineMigrationsVersion20240101120000'

Пример

Давайте передадим собственное имя миграции первым параметром:

php bin/console doctrine:migrations:diff AddArticleTable

Результат выполнения команды:

Generated new migration class to "migrations/Version20240101120000.php"

Пример

Давайте посмотрим содержимое сгенерированного файла миграции:

<?php declare(strict_types=1); namespace DoctrineMigrations; use DoctrineDBALSchemaSchema; use DoctrineMigrationsAbstractMigration; final class Version20240101120000 extends AbstractMigration { public function getDescription(): string { return 'Add article table'; } public function up(Schema $schema): void { $this->addSql('CREATE TABLE article (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, text LONGTEXT DEFAULT NULL, published TINYINT(1) NOT NULL, createdAt DATETIME DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); } public function down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

Пример

Давайте применим сгенерированную миграцию к базе данных:

php bin/console doctrine:migrations:migrate

Результат выполнения команды:

WARNING! You are about to execute a migration in database "app" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]: > yes [OK] Successfully migrated to version: DoctrineMigrationsVersion20240101120000

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить