Überprüfung auf Tabellenexistenz in Migration hinzufügen.

This commit is contained in:
Marcel Diegelmann 2026-03-23 08:17:18 +01:00
parent e4cd243c7c
commit dde91ff1c5
2 changed files with 209 additions and 187 deletions

View file

@ -16,76 +16,80 @@ final class Version20251016141941 extends AbstractMultiPlatformMigration
public function mySQLUp(Schema $schema): void public function mySQLUp(Schema $schema): void
{ {
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assemblies')) {
CREATE TABLE assemblies ( $this->addSql(<<<'SQL'
id INT AUTO_INCREMENT NOT NULL, CREATE TABLE assemblies (
parent_id INT DEFAULT NULL, id INT AUTO_INCREMENT NOT NULL,
id_preview_attachment INT DEFAULT NULL, parent_id INT DEFAULT NULL,
name VARCHAR(255) NOT NULL, id_preview_attachment INT DEFAULT NULL,
comment LONGTEXT NOT NULL, name VARCHAR(255) NOT NULL,
not_selectable TINYINT(1) NOT NULL, comment LONGTEXT NOT NULL,
alternative_names LONGTEXT DEFAULT NULL, not_selectable TINYINT(1) NOT NULL,
order_quantity INT NOT NULL, alternative_names LONGTEXT DEFAULT NULL,
status VARCHAR(64) DEFAULT NULL, order_quantity INT NOT NULL,
ipn VARCHAR(100) DEFAULT NULL, status VARCHAR(64) DEFAULT NULL,
order_only_missing_parts TINYINT(1) NOT NULL, ipn VARCHAR(100) DEFAULT NULL,
description LONGTEXT NOT NULL, order_only_missing_parts TINYINT(1) NOT NULL,
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, description LONGTEXT NOT NULL,
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
INDEX IDX_5F3832C0727ACA70 (parent_id), datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
INDEX IDX_5F3832C0EA7100A1 (id_preview_attachment), INDEX IDX_5F3832C0727ACA70 (parent_id),
UNIQUE INDEX UNIQ_5F3832C03D721C14 (ipn), INDEX IDX_5F3832C0EA7100A1 (id_preview_attachment),
INDEX assembly_idx_ipn (ipn), UNIQUE INDEX UNIQ_5F3832C03D721C14 (ipn),
PRIMARY KEY(id) INDEX assembly_idx_ipn (ipn),
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` PRIMARY KEY(id)
SQL); ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci`
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assemblies $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) ALTER TABLE assemblies
SQL); ADD CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id)
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assemblies $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES `attachments` (id) ON DELETE SET NULL ALTER TABLE assemblies
SQL); ADD CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES `attachments` (id) ON DELETE SET NULL
SQL);
}
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assembly_bom_entries')) {
CREATE TABLE assembly_bom_entries ( $this->addSql(<<<'SQL'
id INT AUTO_INCREMENT NOT NULL, CREATE TABLE assembly_bom_entries (
id_assembly INT DEFAULT NULL, id INT AUTO_INCREMENT NOT NULL,
id_part INT DEFAULT NULL, id_assembly INT DEFAULT NULL,
id_referenced_assembly INT DEFAULT NULL, id_part INT DEFAULT NULL,
quantity DOUBLE PRECISION NOT NULL, id_referenced_assembly INT DEFAULT NULL,
mountnames LONGTEXT NOT NULL, quantity DOUBLE PRECISION NOT NULL,
designator LONGTEXT NOT NULL, mountnames LONGTEXT NOT NULL,
name VARCHAR(255) DEFAULT NULL, designator LONGTEXT NOT NULL,
comment LONGTEXT NOT NULL, name VARCHAR(255) DEFAULT NULL,
price NUMERIC(11, 5) DEFAULT NULL, comment LONGTEXT NOT NULL,
price_currency_id INT DEFAULT NULL, price NUMERIC(11, 5) DEFAULT NULL,
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, price_currency_id INT DEFAULT NULL,
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
INDEX IDX_8C74887E4AD2039E (id_assembly), datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
INDEX IDX_8C74887EC22F6CC4 (id_part), INDEX IDX_8C74887E4AD2039E (id_assembly),
INDEX IDX_8C74887E22522999 (id_referenced_assembly), INDEX IDX_8C74887EC22F6CC4 (id_part),
INDEX IDX_8C74887E3FFDCD60 (price_currency_id), INDEX IDX_8C74887E22522999 (id_referenced_assembly),
PRIMARY KEY(id) INDEX IDX_8C74887E3FFDCD60 (price_currency_id),
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` PRIMARY KEY(id)
SQL); ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci`
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id)
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES `parts` (id) ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES `parts` (id)
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON DELETE SET NULL ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON DELETE SET NULL
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id)
SQL);
}
} }
public function mySQLDown(Schema $schema): void public function mySQLDown(Schema $schema): void
@ -96,56 +100,60 @@ final class Version20251016141941 extends AbstractMultiPlatformMigration
public function sqLiteUp(Schema $schema): void public function sqLiteUp(Schema $schema): void
{ {
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assemblies')) {
CREATE TABLE assemblies ( $this->addSql(<<<'SQL'
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, CREATE TABLE assemblies (
parent_id INTEGER DEFAULT NULL, id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
id_preview_attachment INTEGER DEFAULT NULL, parent_id INTEGER DEFAULT NULL,
order_quantity INTEGER NOT NULL, id_preview_attachment INTEGER DEFAULT NULL,
order_only_missing_parts BOOLEAN NOT NULL, order_quantity INTEGER NOT NULL,
comment CLOB NOT NULL, order_only_missing_parts BOOLEAN NOT NULL,
not_selectable BOOLEAN NOT NULL, comment CLOB NOT NULL,
name VARCHAR(255) NOT NULL, not_selectable BOOLEAN NOT NULL,
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, name VARCHAR(255) NOT NULL,
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
status VARCHAR(64) DEFAULT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
ipn VARCHAR(100) DEFAULT NULL, status VARCHAR(64) DEFAULT NULL,
description CLOB NOT NULL, ipn VARCHAR(100) DEFAULT NULL,
alternative_names CLOB DEFAULT NULL, description CLOB NOT NULL,
CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, alternative_names CLOB DEFAULT NULL,
CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
) CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE
SQL); )
$this->addSql('CREATE INDEX IDX_5F3832C0727ACA70 ON assemblies (parent_id)'); SQL);
$this->addSql('CREATE INDEX IDX_5F3832C0EA7100A1 ON assemblies (id_preview_attachment)'); $this->addSql('CREATE INDEX IDX_5F3832C0727ACA70 ON assemblies (parent_id)');
$this->addSql('CREATE UNIQUE INDEX UNIQ_5F3832C03D721C14 ON assemblies (ipn)'); $this->addSql('CREATE INDEX IDX_5F3832C0EA7100A1 ON assemblies (id_preview_attachment)');
$this->addSql('CREATE INDEX assembly_idx_ipn ON assemblies (ipn)'); $this->addSql('CREATE UNIQUE INDEX UNIQ_5F3832C03D721C14 ON assemblies (ipn)');
$this->addSql('CREATE INDEX assembly_idx_ipn ON assemblies (ipn)');
}
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assembly_bom_entries')) {
CREATE TABLE assembly_bom_entries ( $this->addSql(<<<'SQL'
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, CREATE TABLE assembly_bom_entries (
id_assembly INTEGER DEFAULT NULL, id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
id_part INTEGER DEFAULT NULL, id_assembly INTEGER DEFAULT NULL,
id_referenced_assembly INTEGER DEFAULT NULL, id_part INTEGER DEFAULT NULL,
price_currency_id INTEGER DEFAULT NULL, id_referenced_assembly INTEGER DEFAULT NULL,
quantity DOUBLE PRECISION NOT NULL, price_currency_id INTEGER DEFAULT NULL,
mountnames CLOB NOT NULL, quantity DOUBLE PRECISION NOT NULL,
designator CLOB NOT NULL, mountnames CLOB NOT NULL,
name VARCHAR(255) DEFAULT NULL, designator CLOB NOT NULL,
comment CLOB NOT NULL, name VARCHAR(255) DEFAULT NULL,
price NUMERIC(11, 5) DEFAULT NULL, comment CLOB NOT NULL,
last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, price NUMERIC(11, 5) DEFAULT NULL,
datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE,
CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON UPDATE NO ACTION ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE,
) CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
SQL); )
$this->addSql('CREATE INDEX IDX_8C74887E4AD2039E ON assembly_bom_entries (id_assembly)'); SQL);
$this->addSql('CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)'); $this->addSql('CREATE INDEX IDX_8C74887E4AD2039E ON assembly_bom_entries (id_assembly)');
$this->addSql('CREATE INDEX IDX_8C74887E22522999 ON assembly_bom_entries (id_referenced_assembly)'); $this->addSql('CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)');
$this->addSql('CREATE INDEX IDX_8C74887E3FFDCD60 ON assembly_bom_entries (price_currency_id)'); $this->addSql('CREATE INDEX IDX_8C74887E22522999 ON assembly_bom_entries (id_referenced_assembly)');
$this->addSql('CREATE INDEX IDX_8C74887E3FFDCD60 ON assembly_bom_entries (price_currency_id)');
}
} }
public function sqLiteDown(Schema $schema): void public function sqLiteDown(Schema $schema): void
@ -156,76 +164,80 @@ final class Version20251016141941 extends AbstractMultiPlatformMigration
public function postgreSQLUp(Schema $schema): void public function postgreSQLUp(Schema $schema): void
{ {
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assemblies')) {
CREATE TABLE assemblies ( $this->addSql(<<<'SQL'
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, CREATE TABLE assemblies (
name VARCHAR(255) NOT NULL, id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, name VARCHAR(255) NOT NULL,
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
comment TEXT NOT NULL, datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
not_selectable BOOLEAN NOT NULL, comment TEXT NOT NULL,
alternative_names TEXT DEFAULT NULL, not_selectable BOOLEAN NOT NULL,
order_quantity INT NOT NULL, alternative_names TEXT DEFAULT NULL,
status VARCHAR(64) DEFAULT NULL, order_quantity INT NOT NULL,
ipn VARCHAR(100) DEFAULT NULL, status VARCHAR(64) DEFAULT NULL,
order_only_missing_parts BOOLEAN NOT NULL, ipn VARCHAR(100) DEFAULT NULL,
description TEXT NOT NULL, order_only_missing_parts BOOLEAN NOT NULL,
parent_id INT DEFAULT NULL, description TEXT NOT NULL,
id_preview_attachment INT DEFAULT NULL, parent_id INT DEFAULT NULL,
PRIMARY KEY(id) id_preview_attachment INT DEFAULT NULL,
) PRIMARY KEY(id)
SQL); )
$this->addSql('CREATE INDEX IDX_5F3832C0727ACA70 ON assemblies (parent_id)'); SQL);
$this->addSql('CREATE INDEX IDX_5F3832C0EA7100A1 ON assemblies (id_preview_attachment)'); $this->addSql('CREATE INDEX IDX_5F3832C0727ACA70 ON assemblies (parent_id)');
$this->addSql('CREATE UNIQUE INDEX UNIQ_5F3832C03D721C14 ON assemblies (ipn)'); $this->addSql('CREATE INDEX IDX_5F3832C0EA7100A1 ON assemblies (id_preview_attachment)');
$this->addSql('CREATE INDEX assembly_idx_ipn ON assemblies (ipn)'); $this->addSql('CREATE UNIQUE INDEX UNIQ_5F3832C03D721C14 ON assemblies (ipn)');
$this->addSql(<<<'SQL' $this->addSql('CREATE INDEX assembly_idx_ipn ON assemblies (ipn)');
ALTER TABLE assemblies $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assemblies
SQL); ADD CONSTRAINT FK_5F3832C0727ACA70 FOREIGN KEY (parent_id) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assemblies $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assemblies
SQL); ADD CONSTRAINT FK_5F3832C0EA7100A1 FOREIGN KEY (id_preview_attachment) REFERENCES "attachments" (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE
SQL);
}
$this->addSql(<<<'SQL' if (!$this->doesTableExist('assembly_bom_entries')) {
CREATE TABLE assembly_bom_entries ( $this->addSql(<<<'SQL'
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, CREATE TABLE assembly_bom_entries (
id_assembly INT DEFAULT NULL, id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
id_part INT DEFAULT NULL, id_assembly INT DEFAULT NULL,
id_referenced_assembly INT DEFAULT NULL, id_part INT DEFAULT NULL,
quantity DOUBLE PRECISION NOT NULL, id_referenced_assembly INT DEFAULT NULL,
mountnames TEXT NOT NULL, quantity DOUBLE PRECISION NOT NULL,
designator TEXT NOT NULL, mountnames TEXT NOT NULL,
name VARCHAR(255) DEFAULT NULL, designator TEXT NOT NULL,
comment TEXT NOT NULL, name VARCHAR(255) DEFAULT NULL,
price NUMERIC(11, 5) DEFAULT NULL, comment TEXT NOT NULL,
price_currency_id INT DEFAULT NULL, price NUMERIC(11, 5) DEFAULT NULL,
last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, price_currency_id INT DEFAULT NULL,
datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, last_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY(id) datetime_added TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
) PRIMARY KEY(id)
SQL); )
$this->addSql('CREATE INDEX IDX_8C74887E4AD2039E ON assembly_bom_entries (id_assembly)'); SQL);
$this->addSql('CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)'); $this->addSql('CREATE INDEX IDX_8C74887E4AD2039E ON assembly_bom_entries (id_assembly)');
$this->addSql('CREATE INDEX IDX_8C74887E22522999 ON assembly_bom_entries (id_referenced_assembly)'); $this->addSql('CREATE INDEX IDX_8C74887EC22F6CC4 ON assembly_bom_entries (id_part)');
$this->addSql('CREATE INDEX IDX_8C74887E3FFDCD60 ON assembly_bom_entries (price_currency_id)'); $this->addSql('CREATE INDEX IDX_8C74887E22522999 ON assembly_bom_entries (id_referenced_assembly)');
$this->addSql(<<<'SQL' $this->addSql('CREATE INDEX IDX_8C74887E3FFDCD60 ON assembly_bom_entries (price_currency_id)');
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E4AD2039E FOREIGN KEY (id_assembly) REFERENCES assemblies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887EC22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E22522999 FOREIGN KEY (id_referenced_assembly) REFERENCES assemblies (id) ON DELETE SET NULL NOT DEFERRABLE INITIALLY IMMEDIATE
$this->addSql(<<<'SQL' SQL);
ALTER TABLE assembly_bom_entries $this->addSql(<<<'SQL'
ADD CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE assembly_bom_entries
SQL); ADD CONSTRAINT FK_8C74887E3FFDCD60 FOREIGN KEY (price_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE
SQL);
}
} }
public function postgreSQLDown(Schema $schema): void public function postgreSQLDown(Schema $schema): void

View file

@ -138,6 +138,16 @@ abstract class AbstractMultiPlatformMigration extends AbstractMigration
return $result > 0; return $result > 0;
} }
/**
* Checks if a table exists in the database.
* @return bool Returns true, if the table exists
* @throws Exception
*/
public function doesTableExist(string $table): bool
{
return $this->connection->createSchemaManager()->tablesExist([$table]);
}
/** /**
* Checks if a column exists in a table. * Checks if a column exists in a table.
* @return bool Returns true, if the column exists * @return bool Returns true, if the column exists