thinkphp之migration 迁移文件的使用

创建迁移类,首字母必须为大写

php think migrate:create Users
可以看到目录下有新文件 .\database\migrations\20161117144043_users.php

使用实例

<?php

use Phinx\Migration\AbstractMigration;

class Users extends AbstractMigration
{
    /**
     * Change Method.
     */
    public function change()
    {
        // create the table
        $table = $this->table(‘users‘,array(‘engine‘=>‘MyISAM‘));
        $table->addColumn(‘username‘, ‘string‘,array(‘limit‘ => 15,‘default‘=>‘‘,‘comment‘=>‘用户名,登陆使用‘))
            ->addColumn(‘password‘, ‘string‘,array(‘limit‘ => 32,‘default‘=>md5(‘123456‘),‘comment‘=>‘用户密码‘))
            ->addColumn(‘login_status‘, ‘boolean‘,array(‘limit‘ => 1,‘default‘=>0,‘comment‘=>‘登陆状态‘))
            ->addColumn(‘login_code‘, ‘string‘,array(‘limit‘ => 32,‘default‘=>0,‘comment‘=>‘排他性登陆标识‘))
            ->addColumn(‘last_login_ip‘, ‘integer‘,array(‘limit‘ => 11,‘default‘=>0,‘comment‘=>‘最后登录IP‘))
            ->addColumn(‘last_login_time‘, ‘datetime‘,array(‘default‘=>0,‘comment‘=>‘最后登录时间‘))
            ->addColumn(‘is_delete‘, ‘boolean‘,array(‘limit‘ => 1,‘default‘=>0,‘comment‘=>‘删除状态,1已删除‘))
            ->addIndex(array(‘username‘), array(‘unique‘ => true))
            ->create();
    }

    /**
     * Migrate Up.
     */
    public function up()
    {

    }

    /**
     * Migrate Down.
     */
    public function down()
    {

    }
}

以上为thinkphp手册提供的 介绍

======================================================分割线============================================================================

1.创建数据表

使用 up 和 down方法

Up 方法

up方法会在Phinx执行迁移命令时自动执行,并且该脚本之前并没有执行过。你应该将修改数据库的方法写在这个方法里。

Down 方法

down方法会在Phinx执行回滚命令时自动执行,并且该脚本之前已经执行过迁移。你应该将回滚代码放在这个方法里。

Save 方法

当操作 Table 对象时,Phinx 提供了一些操作来改变数据库。如果你不清楚该使用什么操作,建议你使用 save 方法。它将自动识别插入或者更新操作,并将改变应用到数据库。

创建数据表时推荐使用  这三个方法!

字段操作

字段类型

字段类型如下:

  • biginteger
  • binary
  • boolean
  • date
  • datetime
  • decimal
  • float
  • integer
  • string
  • text
  • time
  • timestamp
  • uuid

另外,MySQL adapter 支持 enum 、set 、blob 和 json (json 需要 MySQL 5.7 或者更高)

Postgres adapter 支持 smallint 、json 、jsonb 和 uuid (需要 PostgresSQL 9.3 或者更高)

2 字段选项

以下是有效的字段选项:

所有字段:

选项 描述
limit 为string设置最大长度
length limit 的别名
default 设置默认值
null 允许空
after 指定字段放置在哪个字段后面
comment 字段注释

decimal 类型字段:

选项 描述
precision 和 scale 组合设置精度
scale 和 precision 组合设置精度
signed 开启或关闭 unsigned 选项(仅适用于 MySQL)

enum 和 set 类型字段:

选项 描述
values 用逗号分隔代表值

integer 和 biginteger 类型字段:

选项 描述
identity 开启或关闭自增长
signed 开启或关闭 unsigned 选项(仅适用于 MySQL)

timestamp 类型字段:

选项 描述
default 设置默认值 (CURRENT_TIMESTAMP)
update 当数据更新时的触发动作 (CURRENT_TIMESTAMP)
timezone 开启或关闭 with time zone 选项

可以在标准使用 addTimestamps() 方法添加 created_at 和 updated_at 。方法支持自定义名字 。使用addSoftDelete 添加软删除字段

更多请参考

https://tsy12321.gitbooks.io/phinx-doc/content/writing-migrations-working-with-tables.html

3  执行命令

php think migrate:run

执行所有迁移文件中的run方法

php think migrate:rollback

回滚命令  执行最后执行的down命令

原文地址:https://www.cnblogs.com/mofei12138/p/11967259.html

时间: 2024-11-08 08:44:46

thinkphp之migration 迁移文件的使用的相关文章

laravel迁移文件

laravel迁移文件的命令 Laravel鼓励敏捷.迭代的开发方式,我们没指望在第一次就获得所有正确的.我们对于自己编写代码,可以通过迁移文件,不断的重复去测试.对于工作,我们开发一个完整的项目,是需要我们每个人相互配合,就好比用svn,git版本控制工具来存储应用程序的源代码文件,使我们能够撤消错误和追踪开发过程中的改变. 但应用程序更改时,存在我们不能单独使用版本控制进行有效管理的区域.在我们如果使用laravel框架开发项目,这个过程中,Laravel应用程序的数据库架构不断演变:如我们

thinkphp 定时执行php文件--windows系统任务计划

实现思路如下: 通过win的"任务"功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法 方法如下: 一,thinkphp开启cli支持 1.tp正好支持cli命令模式,手册的路径为13.7.4 如果是用的其他框架不支持cli,那么只能直接写程序了,其实就是写面向过程的最基础的php代码. 2.在入口文件下开启命令,加入一句 define('MODE_NAME', 'cli'); 网站一般还有可以通过网页访问的模块,所以可以新

WPF做的迁移文件小工具

客户这边需要往服务器上传PDF文件.然后PDF文件很多,需要挑出来的PDF文件也不少.因此做了个小工具. 功能很简单,选定源文件夹,选定记录着要提取的文件的excel 文件.OK ,界面如下. XAML代码如下 <Window x:Class="文件迁移工具.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://sch

thinkphp 定时执行php文件 php自动执行php文件

最近开发短信任务和短信发送功能,用到了定时执行php这方面:和大家分享一下: (个人笔记,写的不好,海涵海涵,看不懂的话可以留言,但是我一般都能及时回复,其他网上有很多这样的教程,大家一搜就满地) 我用的是thinkphp开发的程序,程序已经开发好了,程序有个分批定时发送功能,每隔一段时间查找一下数据库,然后把符合条件的短信任务给发送出去, 实现思路如下: 通过win的“任务”功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数 指定执行哪个类和方法 方法

SharePoint 服务器端对象迁移文件夹

最近有个需求,写个定时迁移文件夹的小程序,因为计时器任务比较繁琐,所以选择了控制台程序.然后,用windows的计划任务执行,也许,会有广大朋友需要类似的功能,简单的分享一下代码逻辑,功能非常简单,希望大家不要见笑. //提升权限代码 SPSecurity.RunWithElevatedPrivileges(delegate() { //提升权限的核心代码 }); //创建网站集和网站对象 using (SPSite site = new SPSite(siteUrl)) { using (SP

ThinkPHP环境下JS文件按模块部署

0.序言 一般来说,ThinkPHP的JS文件目录不是太友好:但允许修改参数确定JS的存放路径. 按照ThinkPHP的目录规范,JS文件一般视同静态资源处理,这样JS文件和视图htm文件将部署在两个完全不同的目录,即使二者属于同一应用.模块.通过Thinkphp提供的模板替换功能,配置模块的JS路径参数,可以将JS文件和普通视图文件都放在同一目录,例如Application/Module/View/目录下,这样在按应用.模块部署将变得更加便捷:两种文件所在位置比较接近,开发过程也相对比较方便(

thinkphp建站-前后台文件配置

首先项目大结构如下: 增加了一个Public文件,主要是管理公共资源,比如图片,样式等,展开如下 子文件夹Image负责管理网页图片,Style文件夹负责管理css,JavaScript等样式,Upload文件夹负责管理用户上传内容,Admin与Home分别代表后台与前台 Team文件夹是我们的项目文件夹,展开如下 我们主要是写Lib下的Action(Admin,Home)与Tpl下的(Admin,Home),Action是业务逻辑,Tpl是网页模板,Admin与Home分别是后台与前台: 要实

laravel 迁移文件中修改含有enum字段的表报错解决方法

解决方法: 在迁移文件中up方法最上方加上下面这一行代码即可: Schema::getConnection()->getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); 例如: public function up() { Schema::getConnection()->getDoctrineSchemaManager()->getDa

PHP 生成压缩包,PHP多个文件合并成压缩包,PHP压缩包, PHP ZipArchive thinkphp 将多个文件合并成压缩包

thinkphp 怎么将文件夹压缩成zip thinkphp 将多个文件合并成压缩包.此功能是依赖于thinkphp //要合并压缩的文件 $files[0] = 'Uploads/baojia_excel/nihao[CG20200402001]采购单(1).xls'; $files[1] = 'Uploads/baojia_excel/分类[CG20200402001]采购单(2).xls'; //这里需要注意该目录是否存在,并且有创建的权限 创建test.zip压缩包 $filename