此问题在此处已有答案:
Laravel migrations: Class "not found"(14个答案)
7天前关闭。
我用laravel 5.6
我要将author_ID
更改为user_id
我的专栏如下:
class CreatePostsTable extends Migration{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->bigInteger('author_ID');
$table->text('title');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
}
我使用下面的链接更改我的列名:
How can I rename a column in laravel using migration?
然后创建鼓风机迁移:
php artisan make:migration rename_author_id_in_post_table
重命名迁移文件:
class UpdateUsernameInPostTable extends Migration{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->renameColumn('author_ID', 'user_id');
});
}
public function down()
{
Schema::create('posts', function (Blueprint $table) {
$table->renameColumn('user_id', 'author_ID');
});
}
}
但使用run命令:php artisan migrate
我遇到以下错误:
Symfony\Component\Debug\Exception\FatalThrowableError :
Class 'RenameAuthorIdInPostTable' not found
5条答案
按热度按时间brjng4g31#
请在删除现有迁移后尝试此代码以更新名称,
它将创建一个迁移,然后在创建的迁移中用this替换up()和down()函数,
和down()函数,
有关迁移的更多信息,您可以通过此链接Laravel Migrations.
迁移问题:
您正在使用
Schema::create()
方法更改表,因为您已经为posts表创建了迁移,您无需执行Schema::create()
,只需使用Schema::table()
方法更新和更改任何字段。b91juud32#
这个错误是由于类名与PHP迁移文件的名称不对应。文件名用于确定它们所包含的类的名称,因此在重命名一个类或一个文件之前,不要重命名另一个类或文件,这一点很重要。
将您的类
UpdateUsernameInPostTable
重命名为RenameAuthorIdInPostTable
,它应该可以工作。如果没有,运行
composer dumpauto
重新加载自动加载文件,它肯定会工作。dz6r00yl3#
通过以下步骤,我可以在Laravel 8中重命名列名
**步骤1:**输入以下命令以创建新的迁移文件
**第二步:**在创建的文件中写入以下代码。按照以下代码执行up()函数
**步骤3:**在down()函数中写入以下代码
**步骤4:**在运行迁移命令之前,请安装doctrine/dbal依赖项
**步骤5:**最后运行迁移命令。
fnx2tebb4#
如果不想使用教条,可以使用DB语句,
r1wp621o5#
最好的方法是检查我们的表中是否有一些列,只是在迁移时避免错误;)