Laravel迁移错误

时间:2013-12-24 01:28:17

标签: laravel migration

我创建了一个新项目和一个新的新模式,使用Users表进行了非常简单的设置,并尝试运行迁移,但迁移器在第一个表上失败,当然这是Users表。我以前遇到过很多麻烦,详细介绍my previous question,最后我从头开始。我有一个超级简单的设置,仍然是迁移器失败。有bug吗?我在哪里可以找到它?我应该将此报告为错误吗?对于那些试图采用这个平台的人来说,在这个过程的早期就像这样难倒,这真是一件令人沮丧的事情。我应该放弃迁移并使用sql脚本创建表格并继续前进吗?

以下是我得到的错误,与我在前一个问题中详述的错误极为相似:

"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');
}

}

受抑。

2 个答案:

答案 0 :(得分: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 需要文件名在开头有四个下划线分隔的块,可以丢弃,文件名的其余部分是蛇形班级名称。

不是我如何做的第一选择,但你去了。

答案 1 :(得分:-1)

此外,对于其他任何有类似问题的人都没有通过以前的解决方案解决,我发现有时会运行

 php artisan dump-autoload

不起作用和

 composer update

解决了这个问题。