您好,请阅读https://laravel.com/docs/5.4/migrations中包含的所有文档。
有没有办法如何迁移某个迁移文件(仅迁移1个),因为每次有更改时我都会使用php artisan migrate:refresh
并且所有字段都会重置。
首先,您应该为您的表创建一个migration
文件,如:
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->string('fname',255);
$table->string('lname',255);
$table->rememberToken();
$table->timestamps();
});
}
在迁移文件夹中创建测试文件夹之后,新创建的迁移在测试文件夹中移动/复制并在终端/ cmd中的命令下运行,如:
php artisan migrate --path=/database/migrations/test/
您可以尝试使用--path =选项来定义要执行的特定子文件夹,并在其中放置特定的迁移。
或者,您需要从DB和迁移表中删除不理想的引用和表:/
如果要创建另一个表,只需创建一个新的迁移文件。它会起作用。
如果使用users_table
创建名为id, first_name, last_name
的迁移。您可以创建一个迁移文件
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name',255);
$table->string('last_name',255);
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
如果要添加另一个字段,如“status”而不迁移:refresh。您可以创建另一个迁移文件,例如“add_status_filed_to_users_table”
public function up()
{
Schema::table('users', function($table) {
$table->integer('status');
});
}
并且不要忘记添加回滚选项:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('status');
});
}
当您使用php artitsan migration
运行迁移时,它只迁移新的迁移文件。
但是,如果将“status”字段添加到第一个迁移文件(users表)中并运行迁移。迁移没什么。你需要运行qazxsw poi。
希望这有帮助。
更正 - 在数据库之前删除斜杠
php artisan migrate:refresh
你可以用它。
- > $ php artisan migrate --path=database/migrations/migration.php
- > https://packagist.org/packages/sayeed/custom-migrate
这很容易使用
简单的方法是在PHPMyAdmin for Mongodb中删除你的表格,然后运行qazxsw poi
只需查看数据库中的migrations
表,就会有一个迁移文件名和批号值列表。
假设你有以下结构,
id migration batch
1 2014_10_12_000000_create_users_table 1
2 2014_10_12_100000_create_password_resets_table 1
3 2016_09_07_103432_create_tabel_roles 1
如果您只想回滚2016_09_07_103432_create_tabel_roles
迁移,请将其迁移批处理值更改为2,这是最高的,然后执行以下操作。
php artisan migrate:rollback
此处仅回滚具有批次值2的表。现在,对该表进行更改并运行以下控制台命令。
php artisan migrate
migrations
表中的批处理值定义了迁移的顺序。回滚时,最新或具有最高批次值的迁移将首先回滚,然后回滚。因此,您可以更改数据库中的值,然后回滚特定的迁移文件。
虽然由于表结构之间的关系,每次更改批次编号不是一个好主意,但我们可以将这种情况用于单表回滚不违反表之间完整性的某些情况。
希望你能理解。
您应该添加迁移文件的路径以刷新此表并运行
php artisan migrate:refresh --path=/database/migrations/fileName.php
只是想发布另一个解决方案,我认为值得一提。
它只会迁移您需要的表格,并且不会触及任何其他表格
你只能回滚:
php artisan migrate:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
您可以使用“步骤”选项指定要回滚到的迁移次数:
php artisan migrate:rollback --step=1
这里有一些技巧:
删除表并从迁移表中删除其记录。
之后,您再次运行迁移:
php artisan migrate
php artisan help migrate
你会看到选项:
--path [= PATH]要执行的迁移文件的路径
顺便说一下,您可以指出要迁移的文件的根文件夹:
php artisan migrate --path=/database/migrations/sample.php
或者,您可以在迁移中创建新文件夹,然后迁移所需的所有迁移文件:
php artisan migrate --path=/database/migrations/new_folder
您需要将文件放入新目录(例如:选中),然后应用
php artisan migrate --path=/database/migrations/selected
如果你需要回滚:
php artisan migrate:rollback --path=/database/migrations/selected
注意:
php artisan migrate:refresh
这将回滚然后迁移默认目录中的所有迁移文件(/ database / migrations)
或者您可以在“迁移”表中从数据库中删除迁移文件名,然后运行:php artisan migration