2013-12-24 3 views
0

Я создал новый проект и новую свежую схему, сделал очень простую настройку с помощью таблицы «Пользователи» и попытался выполнить миграции, но в первой таблице мигрит не работает, что, конечно же, является таблицей «Пользователи» , У меня было много неприятностей с этим раньше, подробно описано на 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

Попытайтесь повторно запустить 'comper install' – 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 

решает эту проблему.

Смежные вопросы