eccube2系を複数人で開発しているときに思うこと。
「3系とか4系みたいにマイグレーション機能があればいいのに!!」
無くてもできるとは思いますが、他メンバーが作ったSQLを自分でいちいち叩くのは面倒。
しかもどのSQL叩いたかどこかにメモしておかないと忘れちゃう…
なんてことありますよね。
それを解消するために今回は2系にマイグレーションツールの「Phinx」を導入したいと思います。
まず、ローカル環境でdocker+eccube2を用意してください。
ここからphinxの導入をしたいと思います。
(1)composerからphinxをインストールする
composer require robmorgan/phinx
しかしエラーが発生。。
Cannot use robmorgan/phinx’s latest version 0.15.2 as it requires php-64bit >=8.1 which is not satisfied by your platform.
Using version ^0.14.0 for robmorgan/phinx
./composer.json has been updated
Running composer update robmorgan/phinx
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
– Root composer.json requires robmorgan/phinx ^0.14.0 -> satisfiable by robmorgan/phinx[0.14.0].
– robmorgan/phinx 0.14.0 requires symfony/console ^3.4|^4.0|^5.0|^6.0 -> found symfony/console[v3.4.0, …, v3.4.47, v4.0.0, …, v4.4.49, v5.0.0, …, v5.4.28, v6.0.0, …, v6.3.4] but the package is fixed to v2.8.52 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
Use the option –with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. “composer require robmorgan/phinx:*” to figure out if any version is installable, or “composer require robmorgan/phinx:^2.1” if you know which you need.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
# php composer require robmorgan/phinx
Could not open input file: composer
ふむふむ。。
phpとバージョンが合わないから使えないよー。
明示的にphinxのバージョンを指定してね的なことを言われました。
なので下記で再実行
composer require robmorgan/phinx:*
ちゃんとインストールされました!
(2)Phinxの設定ファイルを生成するためvendor/bin配下に移動
cd {dataのパス}/vendor/bin
php phinx init
そうすると /var/www/data/vendor/bin/phinx.php(Phinxの設定ファイル)が生成されます。
(3)Phinxの設定ファイルを編集する。
①migrationsを変更→{dataパス}/db/migrations
②seedsを変更→{dataパス}/db/seeds
③developmentもローカル環境に合わせて修正
※data/config/config.phpを参考
paths:
migrations: ①
seeds: ②environments:
default_migration_table: phinxlog
default_database: development
production:
adapter: mysql
host: localhost
name: production_db
user: root
pass: ”
port: 3306
charset: utf8development:③
adapter: mysql
host: localhost
name: development_db
user: root
pass: ”
port: 3306
charset: utf8testing:
adapter: mysql
host: localhost
name: testing_db
user: root
pass: ”
port: 3306
charset: utf8version_order: creation
(4)ディレクトリを作成する
mkdir {dataパス}/db
mkdir {dataパス}/db/migrations
mkdir {dataパス}/db/seeds
これで構築完了です。
一旦ここで終わりです。
次はマイグレーションファイルを実際に作って実行してみましょう。