我创建了一个新项目和一个新的新模式,使用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');
}
}
受抑。
答案 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
解决了这个问题。