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

Метод addSql

Метод addSql класса AbstractMigration добавляет SQL-запрос в очередь на выполнение. Он принимает строку с SQL-запросом и необязательный массив параметров для подготовленного выражения. Запросы выполняются последовательно во время применения миграции.

Синтаксис

$this->addSql(string $sql, array $params = [], array $types = []);

Пример

Давайте создадим миграцию, которая создаёт таблицу article:

<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240101000000 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE article ( id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(255) NOT NULL, text TEXT NOT NULL, created_at DATETIME NOT NULL )'); } public function down(Schema $schema): void { $this->addSql('DROP TABLE article'); } } ?>

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

php bin/console doctrine:migrations:migrate

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

"Table article created successfully"

Пример

Давайте добавим SQL-запрос с параметрами для вставки данных:

<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240101000001 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql( 'INSERT INTO article (title, text, created_at) VALUES (?, ?, ?)', ['article', 'abcde', '2024-01-01 00:00:00'] ); } public function down(Schema $schema): void { $this->addSql('DELETE FROM article WHERE title = ?', ['article']); } } ?>

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

"1 row inserted into article"

Пример

Давайте добавим несколько SQL-запросов в одной миграции:

<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; final class Version20240101000002 extends AbstractMigration { public function up(Schema $schema): void { $this->addSql('CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL )'); $this->addSql('CREATE TABLE article ( id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(255) NOT NULL, user_id INTEGER NOT NULL )'); $this->addSql('ALTER TABLE article ADD CONSTRAINT fk_article_user FOREIGN KEY (user_id) REFERENCES user (id)'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE article DROP CONSTRAINT fk_article_user'); $this->addSql('DROP TABLE article'); $this->addSql('DROP TABLE user'); } } ?>

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

"Tables user and article created with foreign key"

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

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