thinkphp 迁移数据库 -Phinx 简单说明文档
php think
migrate
migrate:create Create a new migration ///创建
migrate:rollback Rollback the last or to a specific migration //回滚
migrate:run Migrate the database //执行
migrate:status Show migration status //状态查看
optimize
optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded wit
h classmaps too, good for production.//朗读优化PSR0和PSR4软件包,也可以通过类映射加载,有利于生产。
optimize:config Build config and common file cache.//构建公共配置文件缓存
optimize:route Build route cache.//构建路由缓存
optimize:schema Build database schema cache. //构建数据库构建缓存
seed
seed:create Create a new database seeder //创建新的数据填充器
seed:run Run database seeders //运行填充器
#创建迁移类,首字母必须为大写
php think migrate:create Users
参考: http://docs.phinx.org/en/latest/index.html
注意:
- Please be aware that when a
changemethod exists, Phinx will automatically ignore theupanddownmethods. If you need to use these methods it is recommended to create a separate migration file.
当change方法存在时,将会自动忽略up /down 方法,如果想要生效需要单独创建文件; - When creating or updating tables inside a
change()method you must use the Tablecreate()andupdate()methods. Phinx cannot automatically determine whether asave()call is creating a new table or modifying an existing one.
在change()方法内创建或更新表时,必须使用表create()和update()方法。Phinx无法自动确定save()是创建新表还是修改现有表。 - Phinx 只能撤销 createTable / renameTable / addColumn / renameColumn / addIndex / addForeignKey 命令;
—— Phinx支持在数据库表上创建外键约束。让我们在示例表中添加一个外键:
<?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration
{
/**
* Migrate Up.
*/
public function up()
{
$table = $this->table('tags');
$table->addColumn('tag_name', 'string')
->save(); $refTable = $this->table('tag_relationships');
$refTable->addColumn('tag_id', 'integer', ['null' => true])
->addForeignKey('tag_id', 'tags', 'id', ['delete'=> 'SET_NULL', 'update'=> 'NO_ACTION'])
->save(); } /**
* Migrate Down.
*/
public function down()
{ }
}
——有效列类型

In addition, the MySQL adapter supports enum, set and blob column types.
In addition, the Postgres adapter supports json, jsonb, uuid, cidr, inet and macaddr column types (PostgreSQL 9.3 and above).
以下是有效的列选项:对于任何列类型:

decimal columns:
For enum and set columns:

For integer and biginteger columns:

For timestamp columns:

朗读您可以使用addTimestamps()方法将created_at和updated_at时间戳添加到表中。此方法还允许您提供替代名称。可选的第三个参数允许您更改要添加的列的时区选项。此外,您可以使用addTimestampsWithTimezone()方法,该方法是addTimestamps()的别名,它始终将第三个参数设置为true(请参阅下面的示例)。
<?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration
{
/**
* Migrate Change.
*/
public function change()
{
// Use defaults (without timezones)
$table = $this->table('users')->addTimestamps()->create();
// Use defaults (with timezones)
$table = $this->table('users')->addTimestampsWithTimezone()->create(); // Override the 'created_at' column name with 'recorded_at'.
$table = $this->table('books')->addTimestamps('recorded_at')->create(); // Override the 'updated_at' column name with 'amended_at', preserving timezones.
// The two lines below do the same, the second one is simply cleaner.
$table = $this->table('books')->addTimestamps(null, 'amended_at', true)->create();
$table = $this->table('users')->addTimestampsWithTimezone(null, 'amended_at')->create();
}
}
For boolean columns:

For string and text columns:

For foreign key definitions:
Limit Option and MySQL
When using the MySQL adapter, additional hinting of database column type can be made for integer, text and blob columns. Using limit with one the following options will modify the column type accordingly:
| Limit | Column Type |
|---|---|
| BLOB_TINY | TINYBLOB |
| BLOB_REGULAR | BLOB |
| BLOB_MEDIUM | MEDIUMBLOB |
| BLOB_LONG | LONGBLOB |
| TEXT_TINY | TINYTEXT |
| TEXT_REGULAR | TEXT |
| TEXT_MEDIUM | MEDIUMTEXT |
| TEXT_LONG | LONGTEXT |
| INT_TINY | TINYINT |
| INT_SMALL | SMALLINT |
| INT_MEDIUM | MEDIUMINT |
| INT_REGULAR | INT |
| INT_BIG | BIGINT |
use Phinx\Db\Adapter\MysqlAdapter;
//...
$table = $this->table('cart_items');
$table->addColumn('user_id', 'integer')
->addColumn('product_id', 'integer', ['limit' => MysqlAdapter::INT_BIG])
->addColumn('subtype_id', 'integer', ['limit' => MysqlAdapter::INT_SMALL])
->addColumn('quantity', 'integer', ['limit' => MysqlAdapter::INT_TINY])
->create();
Get a column list
$columns = $this->table('users')->getColumns();
Get a column by name
$column = $this->table('users')->getColumn('email');
Checking whether a column exists 检查列是否存在
<?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration
{
/**
* Change Method.
*/
public function change()
{
$table = $this->table('user');
$column = $table->hasColumn('username'); if ($column) {
// do something
} }
}
更多查看:http://docs.phinx.org/en/latest/migrations.html#working-with-columns
thinkphp 迁移数据库 -Phinx 简单说明文档的更多相关文章
- sdk 简单说明文档草稿。
SDK初始化: HighApi为SDK核心类,请客户端持有其唯一单例对API进行调用. HighApi构造器函数 HighApi(Context appContext, final String ap ...
- oracle存储过程--导出数据库表的说明文档
Oracle查询表的名字和comments select a.table_name,b.comments from user_tables a,ALL_TAB_COMMENTS b where a.t ...
- 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- 原创SQlServer数据库生成简单的说明文档小工具(附源码)
这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...
- 原创SQlServer数据库生成简单的说明文档包含(存储过程、视图、数据库批量备份)小工具(附源码)
这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...
- Net 通用权限管理系统源码 带数据库设计文档,部署说明文档
Net 通用权限管理系统源码 带数据库设计文档,部署说明文档 包括数据库设计文档部署安装文档源码数据库文件 下载地址:http://www.mallhd.com/archives/1389
- 卡牌手游源码《暗黑世界V1.3》数据库表说明文档!!!
原地址:http://blog.csdn.net/uxqclm/article/details/11970761 欢迎来到9秒:www.9miao.com 由于看到论坛中有人询问需求<暗黑世界V ...
- 《暗黑世界V1.3》数据库表说明文档
<暗黑世界V1.3>数据库表说明文档 (下载地址:http://www.9miao.com/forum.php?mod=viewthread&tid=38821&highl ...
随机推荐
- 携程Apollo一键编译脚本+部署实现
系统编译安装 ubuntu16.11 java 1.8 系统规划 Portal共用 其它环境每个两台机器 mysql都做主从,所以每个环境的机器上都会安装admin 服务,config服务,以及一个m ...
- ubuntu 安装vm-tool
1.“虚拟机”->“安装vmware tools”VMware tools 2. 新建一个文件夹 ,打开vmware tools安装介质.右键选择vmwaretools的gz压缩包,选择“提取到 ...
- 面试常问的几个排序和查找算法,PHP实现
冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubb ...
- 浅谈C#中的for循环与foreach循环
for循环和foreach循环其实可以算得上是从属关系的,即foreach循环是可以转化成for循环,但是for循环不一定能转换成foreach循环. 下面简单介绍一下两种循环: 1.for循环 代码 ...
- Java的SSH框架整合
写了好多篇的Android代码了,在写几篇关于Java的,博客园里肯定都是java的前辈啊,写的不好多给意见. SSH,什么是SSH呢,Struts+Spring+Hibernate,这三个就是整个的 ...
- poi控制简单的word
官方model网址:http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/e ...
- MQTT简单介绍与实现
1. MQTT 介绍它是一种 机器之间通讯 machine-to-machine (M2M).物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议适用于网络带宽较低的场 ...
- extjs 倒计时
var interval = (new Date(selection[0].data.dealLimitTime).getTime() - new Date().getTime()) / 1000; ...
- modbus串口通讯C#
简介 公司给的一个小任务,这篇文章进行详细讲解 题目: modbus串口通讯 主要内容如下: 1.实现使用modbus通讯规约的测试软件: 2.具有通信超时功能: 3.分主站从站,并能编辑报文.生成报 ...
- servlet之转发与重定向的区别
转发(服务器端跳转): 一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...