akrabat/zf1-db-migrate

此软件包最新版本(dev-master)没有可用的许可证信息。

Akrabat的数据库迁移Zend工具提供者

dev-master 2012-08-03 18:22 UTC

This package is not auto-updated.

Last update: 2024-09-22 03:07:17 UTC


README

有关详细信息,请参阅 Akrabat_Db_Schema_Manager: Zend Framework数据库迁移

ZF1

要使Zend工具提供者正常工作

  1. 创建一个包含以下内容的composer.json

     {
         "require": {
             "akrabat/zf1-db-migrate": "dev-master",
             "breerly/zf1": "1.11.11"
         },
         "config": {
             "bin-dir": "bin/"
         }
     }
    
  2. 您需要安装composer https://getcomposer.org.cn,并运行

     php composer.phar install
    
  3. 更新您的 ~/.bash_profile 以设置zf.php脚本的别名

     alias zf='export ZF_CONFIG_FILE=/path/to/my/project/bin/.zf.ini; /path/to/my/project/bin/zf.php'
    

    重启终端或 source ~/.bash_profile

  4. 如果您尚未设置,请设置存储目录和配置文件

     zf --setup storage-directory
     zf --setup config-file
    
  5. 编辑创建的 .zf.ini。更改路径以包含ZF1和Akrabat/zf1,允许自动加载Akrabat并设置提供者

     php.include_path = "/path/to/zf1/library:/path/to/Akrabat/zf1/"
     autoloadernamespaces.0 = "Akrabat_"
     basicloader.classes.0 = "Akrabat_Tool_DatabaseSchemaProvider"
    
  6. zf 应提供帮助屏幕,底部有 DatabaseSchema 提供者。

Akrabat_Db_Schema_Manager

  1. 在您的ZF应用程序中创建scripts/migrations文件夹

  2. 在migrations中创建迁移文件,文件名格式为nnn-Xxxx.php。例如,001-Users.php,其中
    nnn => 任何数字。编号较低的文件先执行
    Xxx => 任何名称。这是文件中的类名。

  3. 在迁移文件中创建一个类。例如,001-Users.php

     class Users extends Akrabat_Db_Schema_AbstractChange 
     {
         function up()
         {
             $tableName = $this->_tablePrefix . 'users';
             $sql = "
                 CREATE TABLE IF NOT EXISTS $tableName (
                   id int(11) NOT NULL AUTO_INCREMENT,
                   username varchar(50) NOT NULL,
                   password varchar(75) NOT NULL,
                   roles varchar(200) NOT NULL DEFAULT 'user',
                   PRIMARY KEY (id)
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
             $this->_db->query($sql);
     
             $data = array();
             $data['username'] = 'admin';
             $data['password'] = sha1('password');
             $data['roles'] = 'user,admin';
             $this->_db->insert($tableName, $data);
         }
         
         function down()
         {
             $tableName = $this->_tablePrefix . 'users';
             $sql= "DROP TABLE IF EXISTS $tableName";
             $this->_db->query($sql);
         }
     
     }
    
  4. 如果您想添加表前缀,请将其添加到 application.ini

     resources.db.table_prefix = "prefix"
    

Akrabat\Db\Schema\Manager

  1. 在您的ZF应用程序中创建scripts/migrations文件夹

  2. 在migrations中创建迁移文件,文件名格式为nnn-Xxxx.php。例如,001-Users.php,其中
    nnn => 任何数字。编号较低的文件先执行
    Xxx => 任何名称。这是文件中的类名。

  3. 在迁移文件中创建一个类。例如,001-Users.php

     class Users extends \Akrabat\Db\Schema\AbstractChange 
     {
         function up()
         {
             $tableName = $this->_tablePrefix . 'users';
             $sql = "
                 CREATE TABLE IF NOT EXISTS $tableName (
                   id int(11) NOT NULL AUTO_INCREMENT,
                   username varchar(50) NOT NULL,
                   password varchar(75) NOT NULL,
                   roles varchar(200) NOT NULL DEFAULT 'user',
                   PRIMARY KEY (id)
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
             $this->_db->query($sql);
     
             $data = array();
             $data['username'] = 'admin';
             $data['password'] = sha1('password');
             $data['roles'] = 'user,admin';
             $this->_db->insert($tableName, $data);
         }
         
         function down()
         {
             $tableName = $this->_tablePrefix . 'users';
             $sql= "DROP TABLE IF EXISTS $tableName";
             $this->_db->query($sql);
         }
     
     }
    
  4. 如果您想添加表前缀,请将其添加到 application.ini

     resources.db.table_prefix = "prefix"
    

Phing任务

  1. build.xml 中定义phing任务

     <taskdef name="dbmigration" classname="phing.tasks.PhingAkrabatDbSchemaManager" />
    
  2. build.xml 中设置具有数据库选项的phing目标

     <target name="database-migration">
     	<dbmigration adapter="mysqli" host="${db.host}" dbname="${db.name}" username="${db.user}" password="${db.pass}" />
     </target>
    
  3. 使用命令行运行phing,通过 phing database-migration