【環境】
Laravel5.6
MySQL5.7.22
Laravelのマイグレーションで以下のように外部キーを設定しました。
Profile_idの外部キーを追加して初めてエラーが出たので、外部キー制約周りがエラー対象だと思うのですが、詳しい原因がわかりません。
データベースの外部キー周りの知識がある方お力添えをお願いしたいです。
※ php artisan migrate:refresh --seedでマイグレーション実行しました。(既存テーブルをすべて削除してからも試しました)
【database/migrations】
php
1**2018_07_07_135039_create_profiles_table.php** 2 3public function up() 4 { 5 Schema::create('profiles', function (Blueprint $table) { 6 $table->increments('id'); 7 $table->string('name'); 8 $table->string('comment'); 9 $table->timestamps(); 10 }); 11 }
php
1**2018_07_08_135937_create_posts_table.php** 2 3public function up() 4 { 5 Schema::create('posts', function (Blueprint $table) { 6 $table->increments('id'); 7 $table->string('title'); 8 $table->text('body'); 9 $table->integer('profile_id')->unsigned(); 10 $table->foreign('profile_id') 11 ->references('id')->on('profiles') 12 ->onDelete('cascade'); 13 $table->timestamps(); 14 }); 15 }
【database/seeds】
php
1 2**ProfileTableSeeder.php** 3 4public function run() 5 { 6 // Fakerを使う 7 $faker = Faker\Factory::create('ja_JP'); 8 9 // ランダムに記事を作成 10 for ($i = 0; $i < 20; $i++) 11 { 12 DB::table('profiles')->insert([ 13 'name' => $faker->unique()->userName(), 14 'comment' => $faker->text(100), 15 'created_at' => $faker->dateTime(), 16 'updated_at' => $faker->dateTime(), 17 ]); 18 } 19 }
php
1 2**PostTableSeeder.php** 3 4public function run() 5 { 6 // Fakerを使う 7 $faker = Faker\Factory::create('ja_JP'); 8 9 // ランダムに記事を作成 10 for ($i = 0; $i < 20; $i++) 11 { 12 DB::table('posts')->insert([ 13 'title' => $faker->text(20), 14 'body' => $faker->text(200), 15 'profile_id' => $faker->numberBetween(1, 20), 16 'created_at' => $faker->dateTime(), 17 'updated_at' => $faker->dateTime(), 18 ]); 19 } 20 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/21 09:05