LoginSignup
2
0

【Laravel】 migrationでテーブル作成時につまづいたこと

Posted at

はじめに

序盤の作業で何かと忘れがちなため、さっさと気づいてしまいたい内容をメモしました:sob:
使用しているのはLaravel6とxamppです。

■ migration

外部キーを設定したい

参照される側

create_users_table.php
Schema::create('users', function (Blueprint $table) {
  $table->bigIncrements('id');
}

参照する側

create_articles_table.php
Schema::create('articles', function (Blueprint $table) {
  $table->unsignedBigInteger('user_id');
  $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
}

うっかりforeignの部分だけ書くと、参照先がなくて怒られます(errno: 150 "Foreign key constraint is incorrectly formed")。

外部キーが反映されない

私の場合、onDeleteをondeleteと書いていました。それでもmigrate自体は回ってしまうのトラップですやん……。

timestamps()とtimestamp()の違い

まさにピッタリな記事があったため、参考欄に記載させていただきます。
混ざるとエラーを吐かれました。

後からDBをいじりたくなった

新しくmigrationファイルを作成して更新。こちらも参考にさせていただいた記事を記載させていただきます。

■ seeder

やり直したい

そのまま回しても上書きはされないため、追加でレコードが入ってしまいます。
ロールバックするなどして一度テーブルを空っぽにしてから再度実行します。

おわりに

エラーの解読大事&意外とスペルミスも侮れないので、エディタのプラグインも活用していこうと思います。おっちょこちょいちょいでした。

参考

「[Laravel 8] マイグレーション実行時、"Foreign key constraint is incorrectly formed" エラーがでるときの解決法」
https://qiita.com/Masahiro111/items/71e645923003d9a10f9e
「【Laravel】わりとよく使うArtisanコマンド集」
https://qiita.com/sola-msr/items/a09b857c5e7f7c88d01d
「【Laravel】timestamps()とtimestamp()の違い」
https://qiita.com/kat0/items/2b8039f5d2c00f2154b1
「Laravelで直接データベースをいじったら地獄を見た件」
https://qiita.com/k-hayack884/items/f84bd81be571d1967be2
「Laravel 6.x データベース:マイグレーション」
https://readouble.com/laravel/6.x/ja/migrations.html

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