2016-07-11 51 views
1

爲什麼不能,而且看起來沒什麼可遷移的?沒什麼可遷移的laravel 4.2

當遷移創建表的作者和書都可以,但外鍵後不能

遷移添加外:

public function up() 
    { 
     Schema::table('books', function(Blueprint $table) { 
      $table->foreign('author_id')->references('id')->on('authors') 
       ->onDelete('restrict') 
       ->onUpdate('cascade'); 
     }); 
    } 

使用本:

php artisan migrate 

與此:

php artisan migrate --path=app/database/migrations/2016_07_11_105204_add_foreign_key_to_books.php 

仍不能,

表的書:

public function up() 
{ 
    Schema::create('books', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->integer('author_id')->unsigned(); 
     $table->integer('amount')->unsigned(); 
     $table->timestamps(); 
    }); 
} 

表作者:

public function up() 
    { 
     Schema::create('authors', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->timestamps(); 
     }); 
    } 

感謝您的幫助..

+1

如果您手動添加了遷移,請嘗試使用'composer dumpautoload'來識別它。 –

回答

0

Laravel 4.2的schema不支持更新列。對只有目錄路徑--path選項

Schema::table('books', function(Blueprint $table) { 
{ 
    $table->dropColumn('author_id'); 
    $table->integer('author_id')->after('title')->unsigned(); 
    $table->foreign('author_id')->references('id')->on('authors') 
      ->onDelete('restrict') 
      ->onUpdate('cascade'); 
} 
0

對於開始遷移調用命令:所以,你可以做這種方式(先刪除它,然後將其創建爲外鍵)。

php artisan migrate --path=app/database/migrations 

您設置-path與文件名。

1

我也有類似的問題。我找到一個方法。它不是官方的

  1. 首先去數據庫。如果你使用mysql。有遷移表。請參閱遷移表具有ROW 就像您的遷移文件名稱,如2016_07_11_105204_books。
  2. 刪除ROW by delete命令。
  3. 刪除或放下書桌。
  4. 然後轉到命令提示符。再次提供命令php artisan migrate

它會適用於我。