From 54fa272910ba9503a555f4454d11bd5218833a35 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Tue, 10 Jan 2023 17:27:41 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20lien=20d'h=C3=A9ritage=20dans=20la?= =?UTF-8?q?=20bdd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- migrations/Version20221116143546.php | 50 ++++++++++++++++++++++++++++ migrations/Version20230110162444.php | 40 ++++++++++++++++++++++ src/Entity/Corridor.php | 2 +- src/Entity/Place.php | 3 ++ src/Entity/Room.php | 2 +- 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 migrations/Version20221116143546.php create mode 100644 migrations/Version20230110162444.php diff --git a/migrations/Version20221116143546.php b/migrations/Version20221116143546.php new file mode 100644 index 0000000..75fcf77 --- /dev/null +++ b/migrations/Version20221116143546.php @@ -0,0 +1,50 @@ +addSql('CREATE TABLE place_place (place_source INT NOT NULL, place_target INT NOT NULL, PRIMARY KEY(place_source, place_target))'); + $this->addSql('CREATE INDEX IDX_DD6B48EEFD44781A ON place_place (place_source)'); + $this->addSql('CREATE INDEX IDX_DD6B48EEE4A12895 ON place_place (place_target)'); + $this->addSql('ALTER TABLE place_place ADD CONSTRAINT FK_DD6B48EEFD44781A FOREIGN KEY (place_source) REFERENCES place (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE place_place ADD CONSTRAINT FK_DD6B48EEE4A12895 FOREIGN KEY (place_target) REFERENCES place (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE corridor ADD floor_id INT NOT NULL'); + $this->addSql('ALTER TABLE corridor ADD CONSTRAINT FK_D6DEE755854679E2 FOREIGN KEY (floor_id) REFERENCES floor (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX IDX_D6DEE755854679E2 ON corridor (floor_id)'); + $this->addSql('ALTER TABLE floor ADD building_id INT NOT NULL'); + $this->addSql('ALTER TABLE floor ADD CONSTRAINT FK_BE45D62E4D2A7E12 FOREIGN KEY (building_id) REFERENCES building (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX IDX_BE45D62E4D2A7E12 ON floor (building_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('ALTER TABLE place_place DROP CONSTRAINT FK_DD6B48EEFD44781A'); + $this->addSql('ALTER TABLE place_place DROP CONSTRAINT FK_DD6B48EEE4A12895'); + $this->addSql('DROP TABLE place_place'); + $this->addSql('ALTER TABLE floor DROP CONSTRAINT FK_BE45D62E4D2A7E12'); + $this->addSql('DROP INDEX IDX_BE45D62E4D2A7E12'); + $this->addSql('ALTER TABLE floor DROP building_id'); + $this->addSql('ALTER TABLE corridor DROP CONSTRAINT FK_D6DEE755854679E2'); + $this->addSql('DROP INDEX IDX_D6DEE755854679E2'); + $this->addSql('ALTER TABLE corridor DROP floor_id'); + } +} diff --git a/migrations/Version20230110162444.php b/migrations/Version20230110162444.php new file mode 100644 index 0000000..477af00 --- /dev/null +++ b/migrations/Version20230110162444.php @@ -0,0 +1,40 @@ +addSql('DROP SEQUENCE corridor_id_seq CASCADE'); + $this->addSql('DROP SEQUENCE room_id_seq CASCADE'); + $this->addSql('ALTER TABLE corridor ADD CONSTRAINT FK_D6DEE755BF396750 FOREIGN KEY (id) REFERENCES place (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE place ADD type VARCHAR(255) NOT NULL'); + $this->addSql('ALTER TABLE room ADD CONSTRAINT FK_729F519BBF396750 FOREIGN KEY (id) REFERENCES place (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('CREATE SEQUENCE corridor_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('CREATE SEQUENCE room_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('ALTER TABLE room DROP CONSTRAINT FK_729F519BBF396750'); + $this->addSql('ALTER TABLE place DROP type'); + $this->addSql('ALTER TABLE corridor DROP CONSTRAINT FK_D6DEE755BF396750'); + } +} diff --git a/src/Entity/Corridor.php b/src/Entity/Corridor.php index b3280ee..4e95301 100644 --- a/src/Entity/Corridor.php +++ b/src/Entity/Corridor.php @@ -8,7 +8,7 @@ use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass=CorridorRepository::class) */ -class Corridor +class Corridor extends Place { /** * @ORM\Id diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 66e4b1d..601db05 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -9,6 +9,9 @@ use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass=PlaceRepository::class) + * @ORM\InheritanceType("JOINED") + * @ORM\DiscriminatorColumn(name="type", type="string") + * @ORM\DiscriminatorMap({"room"="Room","corridor"="Corridor"}) */ class Place { diff --git a/src/Entity/Room.php b/src/Entity/Room.php index 69630d3..ac6ccbd 100644 --- a/src/Entity/Room.php +++ b/src/Entity/Room.php @@ -8,7 +8,7 @@ use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass=RoomRepository::class) */ -class Room +class Room extends Place { /** * @ORM\Id