2013-12-24 232 views
0

我創建了一個新項目和一個全新的模式,使用Users表進行了一個非常簡單的設置,並嘗試運行遷移,但遷移器在第一個表上失敗,這當然是Users表。之前我遇到過很多麻煩,詳細地介紹了my previous question,最後我從頭開始。我有一個超級簡單的設置,仍然是遷移失敗。有錯誤嗎?我在哪裏可以找到它?我應該報告這是一個錯誤?對於那些試圖通過這個平臺在這個過程中很早就陷入困境的人來說,這真是令人沮喪的事情。我應該拋棄遷移並用sql腳本創建我的表並移動?Laravel遷移錯誤

這裏是我得到的錯誤,非常類似於一個我在前面的問題詳細說明:

"Class 'UsersTable' not found... in src\Illuminate\Database\Migrations\Migrator.php line 297 

這裏是我的移民文件:

<?php 
use Illuminate\Database\Migrations\Migration; 
use Illuminate\Database\Schema\Blueprint; 

class CreateUsersTable extends Migration { 

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    // Creates the users table 
    Schema::create('users', function(Blueprint $table) 
    { 
     // $table->engine = 'InnoDB'; 

     $table->increments('id'); 

     $table->string('username', 40) 
      ->nullable() 
      ->default(null); 

     $table->string('email', 40) 
      ->unique(); 

     $table->string('password', 64); 

     $table->smallInteger('acct_type') 
      ->unsigned() 
      ->default(1); 

     $table->string('confirmation_code'); 

     $table->boolean('confirmed') 
      ->default(false); 

     $table->timestamps(); 

     $table->softDeletes(); 

    }); 

} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::drop('users'); 
} 

} 

沮喪。

+0

嘗試重新運行'作曲家安裝' – neoascetic

回答

6

問題可能與您的文件名。與工匠生成遷移會生成格式爲year_month_day_time_class_name_separated_by_underscores的文件名。

Laravel使用拿出從文件名中的類名的代碼

public function resolve($file) 
{ 
    $file = implode('_', array_slice(explode('_', $file), 4)); 

    $class = studly_case($file); 

    return new $class; 
} 

array_slice(...,4)位意味着Laravel 要求該文件名有四個下劃線分隔塊開頭,可以是扔掉,其餘的文件名是蛇案例類名稱。

不是我的第一選擇,但你去了。

+0

非常有用的技巧,因爲我甚至沒有提到我是如何用我自己的文件名僞裝遷移的,所以我更感激。 – Bluesail20

-1

而且,對於任何人有不被以前的解決方案解決了類似的問題,我發現,有時候運行

php artisan dump-autoload 

不起作用和

composer update 

解決了這個問題。