我们有一个现有的复杂数据库模式,包括索引、约束、触发器、表等。
使用 liquibase,您可以指向变更集中的纯 sql 文件,这可能是第一次(初始模式创建)迁移的整个数据库的转储。
有没有什么办法可以用 laravel artisan 迁移系统做到这一点?
我们希望使用 SQL 语言更新所有数据库(因为我们已经知道它,并且因为我们只会使用 mysql),但需要框架(migrate 或 liquibase)以正确的顺序应用更改等等(因此他们会在数据库中记录已应用的更改等)。
如果没有,有没有人在 laravel 中使用过 liqubase?唯一的问题是它无法读取 .env db 连接字符串,并且每个开发人员都需要安装 liqubase(不是世界末日,但如果 laravel 内置系统可以使用 sql,它将节省我们时间和精力)
最佳答案
是的,可以创建使用原始 SQL 的迁移
您不限于可以在迁移中运行的代码。 Run raw SQL queries使用数据库门面。此示例显示了在同一迁移中使用的两种方法。
class AddColumnsToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('name');
$table->string('age');
$table->timestamps();
});
DB::update('update users set age = 30 where name = ?', ['John']);
}
}
关于sql - Laravel 迁移 - 是否可以使用 SQL 而不是模式命令来创建表和字段等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507655/