desaiuditd / enhanced-wp-migrations
WordPress 数据库表架构升级和数据播种管理的库
Requires
- php: >=5.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 20:14:17 UTC
README
一个用于管理数据库表架构升级和数据播种的 WordPress 库。
曾经需要为某些插件或自定义代码创建自定义表吗?为了保持该表与最新版本一致,你需要跟踪表的版本。对于大量表来说,这可能过于复杂。
此包是从 deliciousbrains/wp-migrations 分支出来的,并进行了一些改进。
此包受到 Laravel 的数据库迁移 的启发。你创建一个新的迁移 PHP 文件,添加你的架构更新代码,并可选地包含一个回滚方法以撤销更改。
只需在命令行使用 WP CLI 运行 wp dbi migrate,未运行的任何迁移都将被执行。
使用迁移进行数据库架构和数据更新的好处是,这些更改是文件基础的,因此可以存储在版本控制中,从而在跨不同分支工作时提供更好的控制。
需求
此包旨在用于 WordPress 站点项目,而不是用于插件或主题。
需要运行 PHP 5.4 或更高版本。
需要在服务器上运行 WP CLI 的权限。通常,wp dbi migrate 将作为部署过程中的最后阶段构建步骤运行。
与 wp-migrations 的主要区别
- 移除了对多个迁移目录的支持。我假设你的所有迁移文件都应位于一个位置。这样,包可以遵循 SemVer 在迁移名称和文件名中(类似于 Flyway)。
- 每个迁移将与各自的 SemVer 数字标识。例如,
1、1.0.1、1.1等。 wp edbm migrate命令将使用迁移的版本号而不是类名。例如,wp edbm migrate 2.0.1- 迁移文件命名约定是
<version-number>.php。例如,1.php、1.0.1.php、2.1.php等。通常,你可以从0.0.1.php开始迁移。 - 请确保每个迁移文件中只包含一个类。
安装
composer require desaiuditd/enhanced-wp-migrations- 通过将
\EnhancedWPMigrations\Database\Migrator::instance();添加到 mu-plugin 来引导此包。 - 在服务器上运行
wp edbm migrate --setup。
迁移
默认情况下,命令将在与 vendor 文件夹并列的 /app/migrations 目录中查找迁移文件。这可以通过过滤器 edbm_wp_migrations_path 修改。
创建表的示例迁移如下
<!-- 0.0.1.php -->
<?php
use EnhancedWPMigrations\Database\AbstractMigration;
class AddCustomTable extends AbstractMigration {
public function run() {
global $wpdb;
$sql = "
CREATE TABLE " . $wpdb->prefix . "my_table (
id bigint(20) NOT NULL auto_increment,
some_column varchar(50) NOT NULL,
PRIMARY KEY (id)
) {$this->get_collation()};
";
dbDelta( $sql );
}
public function rollback() {
global $wpdb;
$wpdb->query( 'DROP TABLE ' . $wpdb->prefix . 'my_table');
}
}
我们还在部署时使用迁移来部署开发数据更改。而不是尝试将开发数据库合并到生产数据库中。
例如,要添加一个新页面
<!-- 0.0.1.php -->
<?php
use EnhancedWPMigrations\Database\AbstractMigration;
class AddPricingPage extends AbstractMigration {
public function run() {
$pricing_page_id = wp_insert_post( array(
'post_title' => 'Pricing',
'post_status' => 'publish',
'post_type' => 'page',
) );
update_post_meta( $pricing_page_id, '_wp_page_template', 'page-pricing.php' );
}
}
使用
你可以使用文件名作为参数运行特定的迁移,例如 wp edbm migrate 2.1.1。
要回滚所有迁移,可以运行 wp edbm migrate --rollback,或者仅回滚特定的迁移 wp edbm migrate 2.1.1 --rollback。