Команда doctrine:schema:update
Команда doctrine:schema:update сравнивает текущее состояние базы данных с маппингом сущностей Doctrine и генерирует SQL-запросы для приведения схемы в соответствие. Первым параметром передаётся обязательное действие: --dump-sql для вывода запросов или --force для их выполнения. Без одного из этих флагов команда не выполнит никаких изменений.
Синтаксис
php bin/console doctrine:schema:update [--dump-sql] [--force] [--complete]
Пример
Давайте создадим сущность Article с полем title:
<?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;
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
}
?>
Теперь посмотрим, какие SQL-запросы сгенерирует команда без применения изменений:
php bin/console doctrine:schema:update --dump-sql
Результат выполнения команды:
CREATE TABLE article (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
Пример
Давайте применим изменения к базе данных с помощью флага --force:
php bin/console doctrine:schema:update --force
Результат выполнения команды:
Updating database schema...
Database schema updated successfully! "1" query was executed
Пример
Давайте добавим в сущность новое поле text и повторим обновление:
<?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;
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getText(): ?string
{
return $this->text;
}
public function setText(?string $text): self
{
$this->text = $text;
return $this;
}
}
?>
Теперь выполним обновление схемы:
php bin/console doctrine:schema:update --force
Результат выполнения команды:
Updating database schema...
Database schema updated successfully! "1" query was executed
Команда сгенерировала и выполнила запрос ALTER TABLE article ADD text LONGTEXT DEFAULT NULL.
Смотрите также
-
команда
doctrine:schema:validate,
которая проверяет соответствие схемы БД маппингу -
команда
doctrine:database:create,
которая создаёт базу данных -
команда
doctrine:migrations:diff,
которая генерирует миграцию по изменениям схемы -
команда
doctrine:migrations:migrate,
которая применяет миграции к базе данных