2017-01-01 13 views
1
class CreateCommentsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('comments', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email'); 
      $table->text('comment'); 

      $table->boolean('approved'); 
      $table->integer('post_id')->unsigned(); 
      $table->timestamps(); 
     }); 

     Schema::table('comments', function (Blueprint $table) { 
      $table->foreign('post_id')->references('id')->on('posts'); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropForeign(['post_id']); 
     Schema::dropIfExists('comments'); 
    } 
} 

これは私の移行クラスの外観です。データベースからテーブルを削除しようとしていますが、エラーが発生します。未定義のメソッドを照らし\ Databaseへ未定義のメソッドを呼び出す Database Schema MySqlBuilder :: dropForeign()を呼び出します。

エラー

コール\スキーマ\ MySqlBuilder :: dropForeign()

私は、ドキュメントを介して行っているが、doesnotかなり助けになるように見えます。

誰でも私の間違いを指摘して、解決策は何ですか?

ちょうどあなたが知っている、私はlaravelに新しいです。私は簡単に行ってください。ありがとうございます!

答えて

3

dropForeignこれは<table_name>_<foreign_table_name>_<column_name>_foreignの命名規則に従って

Schema::table('comments', function (Blueprint $table) { 
     $table->dropForeign('comments_post_id_foreign'); 
    }); 

Blueprint対象とSchema::tableの下で呼び出す必要があります。

OR

Schema::table('comments', function (Blueprint $table) { 
     $table->dropForeign(['your_key_name']); 
    }); 
+0

あなただけのキーを指定した場合、それは配列でなければなりません。それ以外の場合は動作しません。 –

+0

ええ、移行での外部キーの命名規則は、 ' _ _ _foreign'です。 – shoieb0101

+0

はい。 Laravel 5ではキーだけを使うこともできますが、 'dropForeign(['your_key_name'])' –

関連する問題