当前位置: 首页 > 知识库问答 >
问题:

Laravel在迁移中向现有表添加新列

马清野
2023-03-14

我不知道如何使用Laravel框架将新列添加到我现有的数据库表中。

我尝试使用...编辑迁移文件。

<?php

public function up()
{
    Schema::create('users', function ($table) {
        $table->integer("paid");
    });
}

在终端中,我执行php artisan迁移:安装迁移

如何添加新列?

共有3个答案

柏正平
2023-03-14

通过执行以下命令创建新的迁移:make:migration

例子:

php artisan make:migration add_store_id_to_users_table --table=users

数据库/迁移文件夹中,您有新的迁移文件,例如:

2018_08_08_093431_add_store_id_to_users_table。php(见注释)

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddStoreIdToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Create new column
            // You probably want to make the new column nullable
            $table->integer('store_id')->unsigned()->nullable()->after('password');

            // 2. Create foreign key constraints
            $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Drop foreign key constraints
            $table->dropForeign(['store_id']);

            // 2. Drop the column
            $table->dropColumn('store_id');
        });
    }
}

然后运行命令:

php artisan migrate

如果出于任何原因要撤消上次迁移,请运行以下命令:

php artisan migrate:rollback

您可以在文档中找到有关迁移的更多信息

张丰
2023-03-14
匿名用户

我将为未来使用Laravel 5.1及以后版本的读者补充mike3875的答案。

为了使事情更快,您可以像这样使用标志“-table”:

php artisan make:migration add_paid_to_users --table="users"

这将自动添加方法内容:

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //
    });
}

类似地,在创建新迁移时,您可以使用创建[“table\u name”]选项,这将为迁移添加更多样板文件。这一点很小,但在做大量工作时很有用!

臧增
2023-03-14

要创建迁移,您可以在Artisan CLI上使用迁移:make命令。使用特定名称以避免与现有模型冲突

对于Laravel 5:

php artisan make:migration add_paid_to_users_table --table=users

对于Laravel 3:

php artisan migrate:make add_paid_to_users

然后需要使用Schema::table()方法(当您访问现有表时,而不是创建新表)。您可以添加如下列:

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

不要忘记添加回滚选项:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

然后您可以运行迁移:

php artisan migrate

这一切都很好地涵盖了Laravel 4/Laravel 5的留档:

  • 架构生成器

对于Laravel 3:

  • 架构生成器

编辑:

使用$表-

 类似资料:
  • 我想在laravel中现有的表中添加一些新列。 我已经在谷歌上搜索过了,在这些搜索之后,我已经使用命令创建了迁移。 将列添加到用户。php 创建之后,我运行这个命令。 但也犯了同样的错误: 基本表或视图已存在:1050个表“用户”已存在(SQL:create table(int unsigned not null自动递增主键,varchar(255)not null,varchar(255)not

  • 我不知道如何使用Laravel框架将新列添加到现有的数据库表中。 我试图使用…编辑迁移文件。。。 在终端,我执行和。 如何添加新列?

  • 我有一些表,我想在这个表中添加新的列。我想添加默认值为空的字符串列。 我试着这样加上去 或 但我有一个错误

  • 问题内容: 我不知道如何使用Laravel框架向现有数据库表添加新列。 我试图使用…来编辑迁移文件。 在终端中,我执行和。 如何添加新列? 问题答案: 要创建迁移,您可以在Artisan CLI上使用migration:make命令。使用特定名称以避免与现有模型冲突 对于Laravel 3: 对于Laravel 5+: 然后,您需要使用该方法(在访问现有表而不是创建新表时)。您可以添加如下所示的列

  • 我正在表任务中添加新列名标题。但我得到一个错误,该表中不存在此列。谁能帮我解决那个错误。这是我的密码: 然后添加此代码 到创建的新表文件

  • 我在Laravel4.2项目中工作,现在我想在现有的表用户中添加列。现在我想添加另一列,当我运行migration命令时,我总是收到相同的消息“无需迁移”下面是我的迁移模式代码 我在终点站跑步 我还运行以下命令 但是当我运行上面的命令时,我收到以下错误 SQLSTATE[42S01]:基表或视图已经存在: 1050表'用户'已经存在