博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp 迁移数据库 -Phinx 简单说明文档
阅读量:4314 次
发布时间:2019-06-06

本文共 4400 字,大约阅读时间需要 14 分钟。

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

注意:

  1.  Please be aware that when a change method exists, Phinx will automatically ignore the up and down methods. If you need to use these methods it is recommended to create a separate migration file.
    当change方法存在时,将会自动忽略up /down 方法,如果想要生效需要单独创建文件;
  2. When creating or updating tables inside a change() method you must use the Table create()and update() methods. Phinx cannot automatically determine whether a save() call is creating a new table or modifying an existing one.
    change()方法内创建或更新表时,必须使用表create()update()方法。Phinx无法自动确定save()是创建新表还是修改现有表。
  3. Phinx 只能撤销 createTable / renameTable / addColumn / renameColumn / addIndex / addForeignKey 命令;

—— Phinx支持在数据库表上创建外键约束。让我们在示例表中添加一个外键:

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 enumset and blob column types.

In addition, the Postgres adapter supports jsonjsonbuuidcidrinet and macaddr column types (PostgreSQL 9.3 and above).

以下是有效的列选项:对于任何列类型:

 

For 
decimal columns:

For enum and set columns:

For integer and biginteger columns:

For timestamp columns:

朗读您可以使用addTimestamps()方法将created_at和updated_at时间戳添加到表中。此方法还允许您提供替代名称。可选的第三个参数允许您更改要添加的列的时区选项。此外,您可以使用addTimestampsWithTimezone()方法,该方法是addTimestamps()的别名,它始终将第三个参数设置为true(请参阅下面的示例)。

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 integertext 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   检查列是否存在

table('user'); $column = $table->hasColumn('username'); if ($column) { // do something } }}

 

  

更多查看:http://docs.phinx.org/en/latest/migrations.html#working-with-columns

转载于:https://www.cnblogs.com/q1104460935/p/10025645.html

你可能感兴趣的文章
IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息...
查看>>
置顶的博客
查看>>
ionic2 native app 更新用户头像暨文件操作
查看>>
SQL Server R2 地图报表制作(一)
查看>>
ZeroMQ——一个轻量级的消息通信组件
查看>>
JavaScript中数组和json的复制
查看>>
C语言多线程编程二
查看>>
转载:从集群计算到云计算
查看>>
服务器文件管理
查看>>
作业2
查看>>
ios上架报错90080,90087,90209,90125 解决办法
查看>>
给button添加UAC的小盾牌图标
查看>>
如何退出 vim
查看>>
Robberies
查看>>
get post 提交
查看>>
R安装
查看>>
跟我一起学C++
查看>>
Android自动化测试之环境搭建
查看>>
JavaScript运算符
查看>>
html position布局
查看>>