sql - Laravel 迁移 - 是否可以使用 SQL 而不是模式命令来创建表和字段等?

标签 sql database laravel migration

我们有一个现有的复杂数据库模式,包括索引、约束、触发器、表等。

使用 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/

相关文章:

sql - Coldfusion SQL 错误

sql - 在 CTE 中设置一个变量

database - 测量 Postgres 中的实际查询性能

php - 当我无法使用 PDO 且使用 MySQL 时,我应该使用 pear MDB2 还是 pear DB_DataObject?

php - 如何有效地使用 laravel 5.5 eloquent 进行复杂的连接和分组

mysql - 将 GROUP BY 添加到 Django 查询

mysql - 以默认 MySQL 值执行计算

php - 使用 Mailgun 在 Laravel 5.4 中发送邮件得到错误代码 "401 UNAUTHORIZED` 响应 : Forbidden "

php - 如何防止模型注入(inject)绑定(bind)错误的 uuid?

mysql - mysql 选择查询中的别名