给PHP框架全副武装——数据迁移

王夫人
• 阅读 2004

有时由于公司需要或接收别人的项目,只能用公司的框架。有些公司自己开发的框架功能并不是那么齐全。可能熟悉了Laravel、TP的你,用起来感觉很难受。下面几篇文章,我会介绍一下为简单PHP框架集成好用的功能,帮你更顺畅的开发。

  • 给PHP框架全副武装——数据迁移
  • 给PHP框架全副武装——命令行工具
  • 给PHP框架全副武装——任务调度
  • ……

这篇文章先来介绍一下数据迁移功能。如果你还在手动修改数据库,我建议你看一下这篇文章。

数据库的修改,也应该像代码一样纳入版本控制,升级代码后,使用命令自动修改数据库。

我们可以使用 phinx 来实现上述功能。

安装

利用 composer 引入 phinx

composer require robmorgan/phinx

在项目目录下创建 db/migrations 目录,并赋予可写权限。

mkdir -p db/migrations

初始化,会在项目目录下生成 phinx.yml 文件

vendor/bin/phinx init

接下来就可以使用了

数据迁移

简单介绍数据迁移的用法。以 Users 表的创建为例

使用命令创建迁移文件

php vendor/bin/phinx create create_users_table

上述命令会在 db/migrations 目录下生成 {timestramp}_create_users_table.php 文件。打开文件,编写代码。

<?php  
  
use Phinx\Migration\AbstractMigration;  
  
class CreateUserTable extends AbstractMigration  
{
    public function up()  
    {  
        $table = $this->table('user');  
          $table->addColumn('username', 'string', array('limit' => 30))  
         ->addColumn('password', 'string', array('limit' => 100))  
         ->addColumn('create_at', 'integer', array('default' => true))  
         ->addColumn('login_at', 'integer', array('default' => true))  
         ->create();  
    } 
    
    public function down()
    {
        $this->dropTable('users');
    }
}

up() 实现了创建 users 表和设置字段等操作, dwon() 是在执行回滚时进行的操作,这里我们实现了删除 users 表操作。如果觉得两个方法写起来太麻烦,可以将 up() 方法改为 change() 方法,change() 方法能根据 up 逻辑自动识别 down 逻辑。

<?php  
  
use Phinx\Migration\AbstractMigration;  
  
class CreateUserTable extends AbstractMigration  
{
    public function change()  
    {  
        $table = $this->table('user');  
          $table->addColumn('username', 'string', array('limit' => 30))  
         ->addColumn('password', 'string', array('limit' => 100))  
         ->addColumn('create_at', 'integer', array('default' => true))  
         ->addColumn('login_at', 'integer', array('default' => true))  
         ->create();  
    }  
}

执行迁移命令,你会发现数据库中生成了 users 表。

vendor/bin/phinx migrate

执行单步回滚,数据库刚刚生成的 users 表已被删除。

vendor/bin/phinx rollback

数据填充

开发阶段,可以使用 phinx 的数据填充功能,并借助 fzaninotto/faker 包,实现假数据填充,以此来辅助开发。

关于 phinx 更详细的用法可以阅读文档。

https://tsy12321.gitbooks.io/...

点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
tp5 修改自带success或error跳转模板页面
tp5修改自带success或error跳转模板页面我们在使用tp5或者tp3.2的时候,用的成功或者失败跳转提示页面一般是用框架的。在后续开发过程中,根据实际项目需要,也是可以更改的,在此分享一个自用的模板。首先是看一下tp框架自带的跳转模板页面,以tp5为例在config.php中,我
Wesley13 Wesley13
4年前
TARS于“中国PHP大会”首次全面发布PHP版本
2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,TARS开源项目核心开发者梁晨(Ted)对PHP如何通过TARS构建高性能RPC框架做了经验分享,并首次全面发布了TARS的PHP版本。“现有PHP的开发生态,至少要做到功能完善、灵活、轻量和高效。 ”梁晨提道。他在分享中介绍了高性能RPC框架TARS的基本设计思想,
Wesley13 Wesley13
4年前
ThinkPHP 控制器调用模板的流程和项目模板部署步骤
现在主流的MVC框架网站中,控制器接收到页面请求后,通常会调用相应的模板,模板经过渲染之后,内容返回给前台页面,如下面ThinkPHP的一个控制器:shop/home/controller/UserController.class.php<?php namespace Home\Controller;use Th
Wesley13 Wesley13
4年前
TARS于“中国PHP大会”首次全面发布PHP版本
2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,TARS开源项目核心开发者梁晨(Ted)对PHP如何通过TARS构建高性能RPC框架做了经验分享,并首次全面发布了TARS的PHP版本。“现有PHP的开发生态,至少要做到功能完善、灵活、轻量和高效。 ”梁晨提道。他在分享中介绍了高性能RPC框架TARS的基本设计思想,
Stella981 Stella981
4年前
Flask框架
FLask框架的简单介绍Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用
Stella981 Stella981
4年前
Laravel、Yii、ThinkPHP性能测试
主流PHP框架性能非权威测试作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。用Laravel的话,传说写起来很爽扩展性也够,但是学习成
Stella981 Stella981
4年前
Laravel
​原文作者:TaylorOtwell(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Ftaylorotwell)网上偶得此书,是Laravel的作者写的。Laravel是近年来优秀的PHP框架,国内外都有很多支持者。该框架应用了大量PHP5
Stella981 Stella981
4年前
Laravel 第三方登陆之 Socialite Providers
Laravel框架在PHP以优雅著称,得到不少同行之人称赞;也招揽了,无数的第三方扩展包,扩展了框架的各个方面功能,本篇文章,采用SocialiteProviders(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsocialiteproviders.netlify.
Wesley13 Wesley13
4年前
ThinkPHP5.0 build 自动生成模块
提示:首先,下载的完整框架或者Composer运行创建命令生成的框架中,build.php文件默认存放于根目录下。需要复制build.php文件到application目录,并对该文件进行修改,举例如下:return//生成应用公共文件
Stella981 Stella981
4年前
NO.13 禅道项目管理软件ZenTaoPHP框架系统要求
禅道项目管理软件ZT框架使用了php5所特有的语法、类、函数,因此php4是无法运行ZT框架的。使用ZT,你需要:1\.webserver最好是apache。因为它和php集成使用是最稳定,功能也是最齐全的一套组合。2\.php最好是5.2以后的版本,最少是5.1系列的版本。3\.数据库最好是mysql4以后的
钟馗 钟馗
1年前