gpt4 book ai didi

migration - 将字段添加到 Laravel 迁移架构

转载 作者:行者123 更新时间:2023-12-02 21:15:48 25 4
gpt4 key购买 nike

我已经阅读了 Laravel 的文档和其他论坛,但它对我不起作用。我已经成功迁移了一个表,现在我想添加一个字段,将架构更改为“表”,但我得到的只是“无需迁移”。

这就是我所做的。

迁移:

<?php

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

class CreateProductTable extends Migration {

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

$table->text('image');
$table->integer('stock');
$table->integer('amount');
$table->string('color');
$table->string('dimension');
$table->integer('ordered');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('product');
}

}

然后,运行命令php artisan migrate,一切顺利。

然后我决定添加新字段,因此我将 Controller 更改为:

<?php

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

class CreateProductTable extends Migration {

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('product', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->text('description');
$table->text('image'); //new
$table->int('active'); //new
$table->integer('stock');
$table->integer('amount');
$table->string('color');
$table->string('dimension');
$table->integer('ordered');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('product');
}

}

然后再次运行php artisan migrate,但我只得到Nothing to migrate

我还删除了蓝图,但效果不佳。 migrate:refreshmigrate:reset 可以完成这项工作,但这不是我想要的,因为它还会删除数据。

最佳答案

我认为这就是您想要做的,请按顺序执行以下步骤

php artisan make:migration create_products_table

充实 create_products_table.php 中的 up 和 down 方法(注意:迁移文件前面将带有一个时间戳,这将确定执行的顺序运行 php artisan migrate 时的迁移。

public function up()
{
Schema::create('product', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->text('description');
$table->integer('stock');
$table->integer('amount');
$table->string('color');
$table->string('dimension');
$table->integer('ordered');
$table->timestamps();
});
}

public function down()
{
Schema::drop('product');
}

然后运行php artisan migrate来创建表

现在您已经创建了产品表,但现在您想要更改该表并向其中添加一些额外的字段。这样做:

php artisan make:migration alter_products_table_add_image_active

现在您有一个单独的迁移来更改表,您不想编辑现有的表,这不是迁移的工作方式。它们本质上保留了数据库构建方式的历史记录,因此任何调整都应该放入新的迁移中,因此如果您碰巧回滚,您可以恢复到以前的状态,这是通过使用 down 方法来完成的,这几乎是与 down 方法相反。

现在在您的 alter 迁移中充实您的 up 和 down 方法,alter_products_table_add_image_active.php(注意: 记住该文件将自动放在前面带时间戳)

public function up()
{
Schema::table('product', function(Blueprint $table)
{
$table->text('image');
$table->int('active');
});
}

public function down()
{
// here you're not dropping the whole table, only removing the newly added columns
Schema::table('club', function(Blueprint $table){
$table->dropColumn('image');
$table->dropColumn('active');
});
}

这应该可以帮助您启动并运行!如果您遇到任何问题,请告诉我。

关于migration - 将字段添加到 Laravel 迁移架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30682362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com