vendor/pimcore/pimcore/bundles/CoreBundle/Migrations/Version20220119082511.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Bundle\CoreBundle\Migrations;
  16. use Doctrine\DBAL\Schema\Schema;
  17. use Doctrine\Migrations\AbstractMigration;
  18. final class Version20220119082511 extends AbstractMigration
  19. {
  20.     public function getDescription(): string
  21.     {
  22.         return 'Use foreign key for delete cascade on gridconfig_favourites & gridconfig_shares';
  23.     }
  24.     public function up(Schema $schema): void
  25.     {
  26.         //disable foreign key checks
  27.         $this->addSql('SET foreign_key_checks = 0');
  28.         $this->addSql('ALTER TABLE `gridconfig_favourites` CHANGE `gridConfigId` `gridConfigId` int(11) NOT NULL;');
  29.         if (!$schema->getTable('gridconfig_favourites')->hasIndex('grid_config_id')) {
  30.             $this->addSql('ALTER TABLE `gridconfig_favourites` ADD INDEX `grid_config_id` (`gridConfigId`);');
  31.         }
  32.         if (!$schema->getTable('gridconfig_favourites')->hasForeignKey('fk_gridconfig_favourites_gridconfigs')) {
  33.             $this->addSql('ALTER TABLE `gridconfig_favourites` ADD CONSTRAINT `fk_gridconfig_favourites_gridconfigs`
  34.             FOREIGN KEY (`gridConfigId`)
  35.             REFERENCES `gridconfigs` (`id`)
  36.             ON UPDATE NO ACTION
  37.             ON DELETE CASCADE;');
  38.         }
  39.         if (!$schema->getTable('gridconfig_shares')->hasIndex('grid_config_id')) {
  40.             $this->addSql('ALTER TABLE `gridconfig_shares` ADD INDEX `grid_config_id` (`gridConfigId`)');
  41.         }
  42.         if (!$schema->getTable('gridconfig_shares')->hasForeignKey('fk_gridconfig_shares_gridconfigs')) {
  43.             $this->addSql(
  44.                 'ALTER TABLE `gridconfig_shares` ADD CONSTRAINT `fk_gridconfig_shares_gridconfigs`
  45.                 FOREIGN KEY (`gridConfigId`)
  46.                 REFERENCES `gridconfigs` (`id`)
  47.                 ON UPDATE NO ACTION
  48.                 ON DELETE CASCADE;'
  49.             );
  50.         }
  51.         //enable foreign key checks
  52.         $this->addSql('SET foreign_key_checks = 1');
  53.     }
  54.     public function down(Schema $schema): void
  55.     {
  56.         if ($schema->getTable('gridconfig_favourites')->hasForeignKey('fk_gridconfig_favourites_gridconfigs')) {
  57.             $this->addSql('ALTER TABLE `gridconfig_favourites` DROP FOREIGN KEY `fk_gridconfig_favourites_gridconfigs`;');
  58.         }
  59.         $this->addSql('ALTER TABLE `gridconfig_favourites` CHANGE `gridConfigId` `gridConfigId` int(11) NULL;');
  60.         if ($schema->getTable('gridconfig_shares')->hasForeignKey('fk_gridconfig_favourites_gridconfigs')) {
  61.             $this->addSql('ALTER TABLE `gridconfig_shares` DROP FOREIGN KEY `fk_gridconfig_shares_gridconfigs`;');
  62.         }
  63.         if ($schema->getTable('gridconfig_favourites')->hasIndex('grid_config_id')) {
  64.             $this->addSql('ALTER TABLE `gridconfig_favourites` DROP INDEX `grid_config_id`;');
  65.         }
  66.         if ($schema->getTable('gridconfig_shares')->hasIndex('grid_config_id')) {
  67.             $this->addSql('ALTER TABLE `gridconfig_shares` DROP INDEX `grid_config_id`;');
  68.         }
  69.     }
  70. }