微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Yii 2.0中的数据库迁移命令

在研究Yii 2.0时,我遇到了人们迁移数据库的不同方式.第一个,我通常遵循的是yii 2’s guide.

使用本指南,我使用yii migrate / create migrationfile和yii migrate等命令

通常在我的迁移文件up()中,方法我会像这样插入代码

$this->createTable('news', [
        'id' => Schema::TYPE_PK,
        'title' => Schema::TYPE_STRING . ' NOT NULL',
        'content' => Schema::TYPE_TEXT,
]);

但是,我也看到了一些教程,例如this one,它在迁移文件中使用了略微不同的命令和代码.从第二个教程开始,我使用了PHP yii migrate / create migrationfile

虽然迁移文件up()方法中使用的语法是这样的:

return $this->createTable('posts', [
        'id' => 'INT PRIMARY KEY AUTO_INCREMENT',
        'title' => 'VARCHAR(255)',
        'content' => 'TEXT',

现在,这导致了一些问题.
1. PHP yii和yii命令有区别吗?
2.使用Schema :: vs不使用它有什么区别?这是迁移数据库的一种更好的方法,因为它是在Yii的迁移指南上写的,或者仅仅是一个优先使用的问题?

解决方法:

1)使用yii和PHP yii是完全一样的.如果你看看yii文件,你会在第一行看到这个:#!/usr/bin/env PHP.这称为“shebang”语法,并指示shell使用PHP二进制文件自动执行yii脚本.见:https://en.wikipedia.org/wiki/Shebang_%28Unix%29

2)这里的区别在于灵活性.如果使用Schema :: TYPE_PK语法,Yii将根据您的数据库后端自动确定确切的列类型.例如,Schema :: TYPE_PK将转换为MysqL中的int(11)NOT NULL AUTO_INCREMENT PRIMARY KEY,但是如果您使用Postgres作为数据库,它将转换为串行NOT NULL PRIMARY KEY. [1]

在实践中,使用哪种方法不太可能有所不同,因为您可能不会在项目中途切换到不同类型的数据库,因此您的迁移脚本不需要与数据库无关.根据您的偏好,您可以选择Schema语法以获得额外的灵活性,或者选择硬编码语法,以便将来阅读它们的人更清楚地了解您的迁移定义.

[1]见https://github.com/yiisoft/yii2/blob/master/framework/db/pgsql/QueryBuilder.php#L21https://github.com/yiisoft/yii2/blob/master/framework/db/mysql/QueryBuilder.php#L24

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐