Migration table created successfully.
CreateUsersTable: create table "users" ("id" integer not null primary key autoincrement, "name" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar null, "created_at" datetime not null, "updated_at" datetime not null)
CreateUsersTable: create unique index users_email_unique on "users" ("email")
CreatePasswordResetsTable: create table "password_resets" ("email" varchar not null, "token" varchar not null, "created_at" datetime not null)
CreatePasswordResetsTable: create index password_resets_email_index on "password_resets" ("email")
CreatePasswordResetsTable: create index password_resets_token_index on "password_resets" ("token")
5条答案
按热度按时间58wvjzkj1#
更新2023-05-24 / Laravel 10
最近,我一直在使用这个一行程序来获取所有迁移的查询列表:
php artisan tinker --no-ansi --execute 'echo implode(PHP_EOL, array_reduce(glob("database/migrations/*.php"), fn($c, $i) => [...$c, ...array_column(app("db")->pretend(fn() => (include $i)->up()), "query")], []))'
使用migrate命令
在运行
php artisan migrate
将查询输出到终端时,可以添加--pretend
标志:它看起来像这样:
要将其保存到文件中,只需重定向输出**,而不使用ansi**:
此命令仅包括尚未迁移的迁移。
破解migrate命令
要进一步定制如何获取查询,请考虑破解源代码并创建自己的自定义命令或类似的东西。为了让您开始,这里有一些快速代码来获得所有迁移。
示例代码
输出示例
此代码将包括所有迁移。要了解如何只获取尚未迁移的内容,请查看
vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php
中的run()
方法。jdg4fx2g2#
如果你遇到了和我一样的问题:
php artisan migrate --pretend
没有输出任何内容,但在没有将记录添加到迁移的情况下运行SQL。换句话说
原因是我设置了几个数据库,这些数据库是用
Schema::connection('master')->create('...
更多关于这个问题,你可以在这里找到:https://github.com/laravel/framework/issues/13431
可悲的是,一个Laravel开发人员关闭了这个问题,引用“* 关闭,因为这个问题似乎是一个罕见的边缘情况,可以用变通方法解决。对于我可能罕见的情况,我将使用第三方SQL差异检查器。
干杯
11dmarpk3#
user2479930的代码很棒,但我得到了:
我调试了这个问题,并通过以下方式修复了它:
p4rjhz4m4#
我用的是Laravel 6.X。对我来说,@user2479930的答案不起作用。我需要通读Migrator的源代码,并添加:
$migrator->requireFiles($migrations);
才能工作。i5desfxk5#
我不得不在--假装,改变这个:
对此: