【发布时间】:2018-01-10 10:24:50
【问题描述】:
您好,请阅读https://laravel.com/docs/5.4/migrations 此处包含的所有文档。
有没有办法迁移某个迁移文件(仅限 1 个迁移),因为现在每次发生更改时我都使用 php artisan migrate:refresh 并且所有字段都被重置。
【问题讨论】:
标签: laravel laravel-5 migration laravel-8
您好,请阅读https://laravel.com/docs/5.4/migrations 此处包含的所有文档。
有没有办法迁移某个迁移文件(仅限 1 个迁移),因为现在每次发生更改时我都使用 php artisan migrate:refresh 并且所有字段都被重置。
【问题讨论】:
标签: laravel laravel-5 migration laravel-8
只要看看你数据库中的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:rollback
https://laravel.com/docs/5.4/migrations#rolling-back-migrations
您可以使用“步骤”选项指定回滚到多少迁移:
php artisan migrate:rollback --step=1
这里有一些技巧:
【讨论】:
您可以尝试使用 --path= 选项来定义您要执行的特定子文件夹,并将特定的迁移放在其中。
或者,您需要从数据库和迁移表中删除不理想的引用和表:/
【讨论】:
如果要创建另一个表,只需创建一个新的迁移文件。它会起作用的。
如果您使用id, first_name, last_name 创建名为users_table 的迁移。您可以创建一个迁移文件,如
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');
}
如果您想在不使用 migrate:refresh 的情况下添加另一个字段,例如“status”。您可以创建另一个迁移文件,例如“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 artisan migration 运行迁移时,只需迁移新的迁移文件即可。
但是,如果您将字段“状态”添加到第一个迁移文件(users_table)并运行迁移。迁移没什么。你需要运行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();
});
}
在 migrations 文件夹中创建 test 文件夹后,然后将新创建的 migration 移动/复制到 test 文件夹并运行终端/cmd 中的以下命令,例如:
php artisan migrate --path=/database/migrations/test/
【讨论】:
删除表并从迁移表中删除其记录。
之后,您只需再次运行迁移:
php artisan migrate
【讨论】:
或者您可以简单地从数据库中的“迁移”表中删除迁移文件名,然后运行:php artitsan migration
【讨论】:
【讨论】:
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 migrate:refresh --path=/database/migrations/fileName.php
【讨论】:
更正-删除数据库前的斜杠
$ php artisan migrate --path=database/migrations/migration.php
【讨论】:
安装这个包
https://github.com/nilpahar/custom-migration/
并运行此命令。
php artisan migrate:custom -f migration_name
【讨论】:
特定表迁移
php artisan migrate --path=/database/migrations/fileName.php
【讨论】:
如果你使用 tab 来自动完成
php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'
【讨论】:
如果你想创建一个特定的表。您可以使用此代码。它适用于 laravel(5.x) 版本。
php artisan migrate:refresh --path=/database/migrations/fileName.php
【讨论】:
php artisan migrate --path=/database/migrations/fileName.php
只要按照指令执行这个命令文件名这里应该是你的迁移表名 例子: php artisan migrate --path=/database/migrations/2020_02_21_101937_create_jobs_table.php
【讨论】:
你可以像这样运行命令
php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php
【讨论】:
首先你应该执行以下命令:
第 1 步:
php artisan migrate:rollback
第 2 步:
php artisan migrate
您的表将回到数据库中。
【讨论】:
php artisan migration:refresh 也一样。
您只能在终端中运行此命令
php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php
迁移后,您应该输入特定的文件名。或者如果您在迁移中有任何文件夹,则只需在迁移后添加该文件夹名称。
这样
php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php
我希望这会对您有所帮助。快乐编码。
【讨论】:
php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php
注意:
之后 --path 没有/之前
【讨论】:
php artisan migrate --path=/database/migrations/fileName.php
您不必为迁移而刷新,因为刷新意味着:回滚 所有迁移并再次运行它们。
【讨论】:
您也可以再次迁移已迁移的表,但首先您需要进入数据库迁移表并删除该特定迁移名称的行。 然后点击 php artisan migrate
【讨论】:
这里 --file= 是你文件的位置,migrate:refresh会清空你的表数据
php artisan migrate:refresh 命令。
【讨论】:
获取迁移的实际文件名和路径并运行如下命令
php artisan migrate --path=/database/migrations/2021_10_03_071450_create_reset_codes_table.php
【讨论】: