TA的每日心情 | 开心 2022-4-21 21:01 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
论坛元老
 
- 积分
- 29055
|
我们团队的开发人员真的习惯了Laravel他们在本地计算机和我们的开发服务器上工作得很好。但是客户的数据库管理员不会接受Laravel迁移。他要求为我们的应用程序的每个新版本提供原始版本SQL脚本。
2 {! M- p+ o( S% C9 \是否有任何工具或编程技术可以捕获Laravel向上/向下移动SQL脚本输出?
/ j, n: Z q# l' p如果创建生产版本,SQL脚本生成集成CI系统(TeamCity)中,那将是完美的。) P0 t3 C+ `+ `9 v% Y
顺便说一句,我们将在这个项目中使用它Laravel 5和PostgreSQL。
: P3 f7 q# W- Z# [
: ~) ^! }9 N' P 解决方案: 3 @4 ^( S1 J, i$ s
使用migration命令您可以--pretend在运行php artisan migrate将查询输出到终端时添加标志:3 r) A2 o, e' v
php artisan migrate --pretend看上去像这样:5 X. l. c8 r7 H# g
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")要将其保存到文件中,只需在 不带ansi的情况下 重定向输出 即可 :
' A9 \ ]+ t1 a& ~6 w; g7 X6 aphp artisan migrate --pretend --no-ansi > migrate.sql该命令仅包括未迁移的迁移。' H( N+ {- e: N
解决迁移命令为了进一步定制获取查询的方式,请考虑破解源代码并制作自己的定制命令或类似命令。为了让你开始使用它,所有的迁移都有一些快速代码。
* Q6 @$ ~- s+ o* s范例程式码$migrator = app('migrator');$db = $migrator->resolveConnection(null);$migrations = $migrator->getMigrationFiles('database/migrations');$queries = [];foreach($migrations as $migration) $migration_name = $migration; $migration = $migrator->resolve($migration); $queries[] = name' => $migration_name, queries' => array_column($db->pretend(function() use ($migration) { $migration->up()query}, dd($queries);输出示例array:2 [ 0 => array:2 [ "name" => "2014_10_12_000000_create_users_table" "queries" => array:2 [ 0 => "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)" 1 => "create unique index users_email_unique on "users" ("email")" => array:2 [ "name" => "2014_10_12_100000_create_password_resets_table" "queries" => array:3 [ 000 => "create table "password_resets" ("email" varchar not null,"token" varchar not null,"created_at" datetime not null)" 1 => "create index password_resets_email_index on "password_resets" ("email")" 2 => "create index password_resets_token_index on "password_resets" ("token")" 这个代码将包括 所有1 p9 \; Z& ]% j1 c h6 E
迁移。如果您想知道如何只获得尚未迁移的内容,请间内容run()方法vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php。 |
|