akrabat / zf1-db-migrate
Akrabat的数据库迁移Zend工具提供者
Requires
- php: >=5.2.7
This package is not auto-updated.
Last update: 2024-09-22 03:07:17 UTC
README
有关详细信息,请参阅 Akrabat_Db_Schema_Manager: Zend Framework数据库迁移
ZF1
要使Zend工具提供者正常工作
-
创建一个包含以下内容的composer.json
{ "require": { "akrabat/zf1-db-migrate": "dev-master", "breerly/zf1": "1.11.11" }, "config": { "bin-dir": "bin/" } }
-
您需要安装composer https://getcomposer.org.cn,并运行
php composer.phar install
-
更新您的
~/.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
-
如果您尚未设置,请设置存储目录和配置文件
zf --setup storage-directory zf --setup config-file
-
编辑创建的
.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"
-
zf
应提供帮助屏幕,底部有DatabaseSchema
提供者。
Akrabat_Db_Schema_Manager
-
在您的ZF应用程序中创建scripts/migrations文件夹
-
在migrations中创建迁移文件,文件名格式为nnn-Xxxx.php。例如,001-Users.php,其中
nnn => 任何数字。编号较低的文件先执行
Xxx => 任何名称。这是文件中的类名。 -
在迁移文件中创建一个类。例如,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); } }
-
如果您想添加表前缀,请将其添加到
application.ini
resources.db.table_prefix = "prefix"
Akrabat\Db\Schema\Manager
-
在您的ZF应用程序中创建scripts/migrations文件夹
-
在migrations中创建迁移文件,文件名格式为nnn-Xxxx.php。例如,001-Users.php,其中
nnn => 任何数字。编号较低的文件先执行
Xxx => 任何名称。这是文件中的类名。 -
在迁移文件中创建一个类。例如,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); } }
-
如果您想添加表前缀,请将其添加到
application.ini
resources.db.table_prefix = "prefix"
Phing任务
-
在
build.xml
中定义phing任务<taskdef name="dbmigration" classname="phing.tasks.PhingAkrabatDbSchemaManager" />
-
在
build.xml
中设置具有数据库选项的phing目标<target name="database-migration"> <dbmigration adapter="mysqli" host="${db.host}" dbname="${db.name}" username="${db.user}" password="${db.pass}" /> </target>
-
使用命令行运行phing,通过
phing database-migration