質問編集履歴

1 タイトルの変更

TaikiS

TaikiS score 4

2018/07/10 15:40  投稿

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

    7002 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Laravel 5

    2540 questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る