php - Yii 2.0 数据库迁移命令

标签 php mysql yii

在研究 Yii 2.0 时,我遇到了人们迁移数据库的不同方式。我通常关注的第一个来自 yii 2's guide .

根据本指南,我使用了诸如 yii migrate/create migrationfileyii 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 yiiyii 命令有区别吗? 2. 使用 Schema:: 与不使用有什么区别?它是迁移数据库的更好方法吗,因为它是 Yii 迁移指南中所写的内容,还是使用哪个只是偏好问题?

最佳答案

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

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

在实践中,您使用哪种方法不太可能有所不同,因为您可能不会在项目中途切换到不同类型的数据库,因此您的迁移脚本不需要与数据库无关。根据您的喜好,您可以选择 Schema 语法以获得额外的灵 active ,或者选择硬编码语法以使您的迁移定义对于将来阅读它们的任何人来说都更加清晰。

[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

关于php - Yii 2.0 数据库迁移命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30095911/

相关文章:

URL 中的 PHP/MySQL 变量 - 文本被剥离,数字部分仅用于选择数据库记录

mysql - Sql SELECT 分组依据和顺序

用于 RESTful API 的 YII URL 管理器

yii - Yii中获取用户IP地址的函数

php - Yii - 应用程序运行时路径 "{path}"无效。请确保它是Web服务器进程可写的目录

php - 产品用滤色片

php - Javascript/PHP 更新多个项目的 innerHTML

php - 将多个 MySQL 查询合并到一个不同的表中

C# MYSQL datagridview 中的多表

mysql - WHERE 中的 SQL 子查询返回有限的结果集,但仍匹配所有结果