在特定的其他列之前或之后添加sql表列 - 通过Laravel 4.1中的迁移

时间:2014-01-07 21:43:12

标签: laravel laravel-4 database-migration

表'用户':

|id|name|address|post_code|deleted_at|created_at|

我希望在'id'和'deleted_at'

之间添加列'phone_nr'

是否可以通过Laravel 4.1进行迁移?

6 个答案:

答案 0 :(得分:104)

是。使用php artisan migrate:make update_users_table创建新的迁移。

然后使用table命令,如下所示(如果您使用的是MySQL!):

Schema::table('users', function($table)
{
    $table->string('phone_nr')->after('id');
});

完成迁移后,保存并使用php artisan migrate运行,您的表格将会更新。

文档:https://laravel.com/docs/4.2/migrations#column-modifiers

答案 1 :(得分:10)

詹姆斯的答案仍然是正确的。但是,Laravel 5略微改变了make migration语法:

php artisan make:migration add_google_auth_to_users_table --table=users

(我知道这个问题被标记为Laravel 4,但问题的排名相当高;)

答案 2 :(得分:0)

对于任何其他想知道@rahulsingh的查询的人,这些查询是在单个特定列之后重新添加多个列:

$table->integer('col1')->after('ref_col');
$table->integer('col2')->after('what');

您可以通过以相反的顺序编写新字段来做到这一点,例如:

$table->integer('col4')->after('ref_col');
$table->integer('col3')->after('ref_col');
$table->integer('col2')->after('ref_col');
$table->integer('col1')->after('ref_col');

运行此迁移时,您会发现新字段colcol2,...按照预期的顺序位于参考字段ref_col之后。

不幸的是,没有before()函数可以在现有字段之前添加字段。 (如果存在的话,我们可以按实际顺序保留上述声明。)


不能对尚不存在的字段进行链接,例如:

$table->integer('col1')->after('ref_col');
$table->integer('col2')->after('col1');
$table->integer('col3')->after('col2');
$table->integer('col4')->after('col3');

这是因为迁移蓝图被编译为一个查询,因此作为一个查询执行,因此在添加col2时,数据库引擎将抱怨col1不存在。

答案 3 :(得分:0)

我已经创建了以下迁移:

  

php artisan make:migration update_nvm_table

2019_07_10_130441_update_nvm_table.php

内部:

public function up()
    {
        Schema::table('nvm', function (Blueprint $table) {
            $table->renameColumn('data1', 'call_owner');
            $table->renameColumn('data2', 'transfer_type');
            $table->string('transfer_data', 50)->nullable();
        });
    }

 public function down()
    {
        Schema::table('nvm', function (Blueprint $table) {
            $table->dropColumn('transfer_data');
            $table->renameColumn('call_owner', 'data1');
            $table->renameColumn('transfer_type', 'data2');
        });
    }

希望它能为您提供参考! :D

答案 4 :(得分:0)

如果你需要在 laravel 8 中的特定列之后添加几列:

<块引用>

使用MySQL数据库时,可以使用after方法添加 架构中现有列之后的列:

$table->after('password', function ($table) {
    $table->string('address_line1');
    $table->string('address_line2');
    $table->string('city');
});

https://laravel.com/docs/8.x/migrations#column-order

答案 5 :(得分:-1)

对于Laravel的最新版本,请说5-6

命令是

include

然后

const users = await db.user.findAll({
  include: [
    db.roles,
  ],
});