こんにちはジャムです。
本記事ではマイグレーションについて解説します。
EC-CUBE4のマイグレーション機能を使うことで、データベースに書き込みたいデータを作成することができます。
マイグレーションを使う機会は主に、ローカル環境、テスト環境、本番環境などで値が変わらないデータの管理です。
例えば、商品のカテゴリーや追加したページの情報は各データベースで変わることは無いため、マイグレーションファイルに記述しておくことで、共有が可能です。
コマンドを1行打ち込むだけで、データベースに書き込みできるで便利です。
それでは、早速基本的な使い方を紹介します。
Contents
基本的な使い方フロー
マイグレーションの生成
$ php bin/console doctrine:migrations:generate
or
$ php bin/console d:m:g
Generated new migration class to "/プロジェクトファイル/app/DoctrineMigrations/Version20210505085837.php"
このコマンドで「Version20210505085837.php」というファイルが生成されます。ファイル名は日付(20210505)+ αで作成されます。
app/DoctrineMigrationsディレクトリ配下に作成されます。
データベースに書き込む内容を記載する
<?php declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20210505085837 extends AbstractMigration
{
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
+ $this->addSql("INSERT INTO `dtb_category`(`id`, `parent_category_id`, `creator_id`, `category_name`, `hierarchy`, `sort_no`, `create_date`, `update_date`, `discriminator_type`) VALUES (1, NULL, NULL, '追加カテゴリー', 1, 8, NOW(), NOW(), 'category');");
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
+ $this->addSql("DELETE FROM `dtb_category` WHERE `category_name` = '追加カテゴリー';");
}
}
この記載例では、upコマンドでdtb_categoryテーブルに、「追加カテゴリー」という名前のカテゴリーを追加します。
downコマンドで、upコマンドで追加した「追加カテゴリー」を削除します。
マイグレーションを実行する
$ php bin/console d:m:m
or
$ php bin/console doctrine:migrations:migrate
こちらで、upメソッドを実行
$ php bin/console d:m:e 20210505085837 --up
マイグレーションを元に戻す
downメソッドを実行
$ php bin/console d:m:e 20210505085837 --down
状態確認
マイグレーションの状況を確認する。
$ php bin/console doctrine:migrations:status
履歴を一覧で確認する
$ php bin/console doctrine:migrations:status --show-versions
スポンサーリンク
スポンサーリンク