app/DoctrineMigrations/Version20240708164000.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20240708164000 extends AbstractMigration
  10. {
  11.     const pages = [
  12.         [
  13.             'name' => '祈りに親しむ',
  14.             'url' => 'special_posts',
  15.             'file' => 'Special/index',
  16.         ],
  17.         [
  18.             'name' => '祈りに親しむ詳細',
  19.             'url' => 'special_post',
  20.             'file' => 'Special/detail',
  21.         ],
  22.     ];
  23.     public function up(Schema $schema): void
  24.     {
  25.         foreach (self::pages as $page) {
  26.             $pageExists $this->connection->fetchOne("SELECT COUNT(*) FROM dtb_page WHERE page_name = '$page[name]'");
  27.             if ($pageExists 0) {
  28.                 continue;
  29.             }
  30.             $sql "INSERT INTO dtb_page SELECT
  31.                 max(id)+1,
  32.                 null,
  33.                 '$page[name]',
  34.                 '$page[url]',
  35.                 '$page[file]',
  36.                 0,
  37.                 null,
  38.                 null,
  39.                 null,
  40.                 CURRENT_TIMESTAMP,
  41.                 CURRENT_TIMESTAMP,
  42.                 null,
  43.                 null,
  44.                 'page'
  45.             FROM dtb_page;";
  46.             $this->addSql($sql);
  47.             $sql "INSERT INTO dtb_page_layout SELECT
  48.                 max(id),
  49.                 2,
  50.                 max(id),
  51.                 'pagelayout'
  52.             FROM dtb_page;";
  53.             $this->addSql($sql);
  54.         }
  55.     }
  56.     public function down(Schema $schema): void
  57.     {
  58.         foreach (self::pages as $page) {
  59.             $sql "DELETE pl FROM dtb_page_layout pl
  60.             LEFT JOIN dtb_page p
  61.             ON pl.page_id = p.id
  62.             WHERE p.page_name = '$page[name]';
  63.             ";
  64.             $this->addSql($sql);
  65.             $sql "DELETE FROM dtb_page
  66.             WHERE page_name = '$page[name]';
  67.             ";
  68.             $this->addSql($sql);
  69.         }
  70.     }
  71. }