はじめに
序盤の作業で何かと忘れがちなため、さっさと気づいてしまいたい内容をメモしました
使用しているのはLaravel6とxamppです。
■ migration
外部キーを設定したい
参照される側
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
}
参照する側
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