結論
ちょっとはサポートしていますが、migrate:fresh
とRefreshDatabase
が対応してないのが大分痛いです😣
DockerでMySQLの複数のデータベースの立ち上げ方が分からない
Laravel関係ないですけど、まずここからが大変なんですよね。結論からいうとdocker-compose.ymlでもDB1個しか対応していないため、コンテナ作成時に自動実行されるSQLファイルを設定して、地道にDB作成やらユーザー設定のSQLを書くというアプローチがベターのようです。変に分散するとアレなんで。
db:
image: mysql:8.0.27
container_name: db
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
# 複数のDBを立ち上げたいがdocker-composeのオプションで対応してないので、
# コンテナ作成時に自動で実行されるSQLファイル内で設定する
- ./docker/db/sql:/docker-entrypoint-initdb.d
migrate:freshで片方のDBしか消えてない
片方のDBしかマイグレーションされないのですがエラーとかは出ずに成功したかのような表記になります。 なんでや!😫
結論から言うと今のところ対応していません。php artisan db:wipe --database 【接続名】
で1個ずつ消してからmigrateしましょう。
マイグレーションやEroquentで毎回::connection(【DB名】)を書くのが辛い
これについては公式で対処法が用意されています。マイグレーションのクラスに下記のようにconnectionプロパティを設定することで切り替えることができます。
/**
* マイグレーションが使用するデータベース接続
*
* @var string
*/
protected $connection = '【DB接続名】';
/**
* マイグレーションの実行
*
* @return void
*/
public function up()
{
//
}
自動テストでRefreshDatabaseが効かない
RefreshDatabaseは内部でmigrate:freshを使っているので効きません。ここは流石に自分でArtisanコマンド作るして呼び出すしかないですね……。
🙏Laravel公式ドキュメント翻訳者への支援のお願い
Laravelの公式ドキュメントの日本語版であるReaDouble.comを運営されている川瀬裕久氏が、広告収入の低下と持病の悪化のため、翻訳プロジェクトを継続することが困難になり、GitHub sponsorsを募集しています。 日本のLaravelユーザーでここを見たことない人はいないと思うので、もし恩義を感じているならば是非支援のほどお願いします。私も支援させていただいております