LoginSignup
2
0

LaravelのDB設計って今どうなってん?

Posted at

目次

1. マイグレーションファイル多すぎ
2. スキーマファイル作れるらしい
3. これでやっと

1. マイグレーションファイル多すぎ

Laravelに限らず、バックエンド系フレームワークのマイグレーションファイルって多すぎますよね。僕のようにインフラ面が分からなすぎるために、ソースコードからDB設計を把握するしかない人間もいるんですよね。
Railsであればschema.rbファイルとかいう神ファイルがあるので問題ないのですが、Laravelってそういうファイルがないから時々どころか相当な頻度で困ることがあるんです。何のカラムを持っているのか分からないからマイグレーションファイルを見にいってという労力を毎回使ってたんです。

2. スキーマファイル作れるらしい

これが当たり前だと思っていたのですが、ふと調べてみたのです。「Laravel Schema」でググってみました。すると、スキーマ系のファイル作れるけど今まで何してたのと言わんばかりにあるコマンドのことが大量に出てきたんです。それが、

スキーマを作成
php artisan schema:dump

これさえ実行してしまえば、こんなSchemaファイルができてしまうんです。

database/schema/*-schema.sql
  :
  :
  :
DROP TABLE IF EXISTS `members`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `members` (
    `id` char(26) COLLATE utf8mb4_unicode_ci NOT NULL,
    `image_id` char(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
    `last_name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL,
    `first_name` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL,
    `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `email_verified_at` timestamp NULL DEFAULT NULL,
    `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `created_at` timestamp NULL DEFAULT NULL,
    `updated_at` timestamp NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `members_email_unique` (`email`),
    KEY `members_image_id_foreign` (`image_id`),
    CONSTRAINT `members_image_id_foreign` FOREIGN KEY (`image_id`) REFERENCES `images` (`id`) ON DELETE SET NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  :
  :
  :

3. これでやっと

長年(数ヶ月)の「Railsはschema.rbファイルあって良いなあ」案件が解消されました。
また一段階、Laravelのことを好きになれた気がします。今日から沢山スキーマファイル作ろうと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0