magnifico/bitrix-phinx

此包最新版本(v0.1.7)没有提供许可证信息。

v0.1.7 2018-07-13 08:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 11:11:16 UTC


README

如何安装

  1. 通过composer安装包
composer require magnifico/bitrix-phinx:^0.1
  1. 从bitrix目录中将名为"magnifico.phinx"的符号链接安装到包的位置,例如
cd /home/bitrix/www/bitrix/modules
ln -s ../../../vendor/magnifico/bitrix-phinx magnifico.phinx
  1. 同样为"magnifico.console"模块做相同操作
cd /home/bitrix/www/bitrix/modules
ln -s ../../../vendor/magnifico/bitrix-console magnifico.console
  1. 在bitrix的行政界面中安装这两个模块

  2. 创建一个名为"manage.php"的文件

<?php

# Определяем, где находится DOCUMENT_ROOT
$_SERVER['DOCUMENT_ROOT'] = '/home/bitrix/www';

# Включаем служебный скрипт из модуля magnifico.console
require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/magnifico.console/manage.php';
  1. 使用

如何使用模块

无需额外配置(如phinx.yml),所有必要的设置都从bitrix内核读取。

与原始phinx不同,每个命令的第一个必填参数是模块名称,该模块包含迁移。所有其他参数保持不变。

例如,如果我们的模块名为magnifico.site,命令将如下所示

# Создать миграцию
php manage.php phinx:create magnifico.site MigrationName

# Применение миграций
php manage.php phinx:migrate magnifico.site

# Откат миграций
php manage.php phinx:rollback magnifico.site

# Информация о миграциях
php manage.php phinx:status magnifico.site

迁移将在相应模块的"migrations"目录中创建和搜索,例如

# Если используется local
/home/bitrix/www/local/modules/magnifico.site/migrations

# Так тоже будет работать
/home/bitrix/www/bitrix/modules/magnifico.site/migrations

与原始phinx不同,数据库中将创建多个表,每个模块一个表,模式为"magnifico_phinx_migrations_of_{module_name}",例如

magnifico_phinx_migrations_of_magnifico_site
magnifico_phinx_migrations_of_atlaslib_feedback

为多个模块应用迁移

php manage.php phinx:migrate magnifico.site1 magnifico.site2 magnifico.site3

为所有模块应用迁移

php manage.php phinx:migrate

当为多个模块应用迁移时,每个模块的迁移将在单独进程中启动。这是为了避免在不同模块中存在同名迁移时重复声明php类。使用以下环境变量来启动单独进程

  • php_bin - php可执行文件路径,默认为PHP_BINARY
  • manager_file - manage.php文件路径,默认为realpath($_SERVER['argv'][0])

如果需要,您可以按以下方式设置这些变量。

\Bitrix\Main\Config\Option::set('magnifico.phinx', 'php_bin', '/bin/php');
\Bitrix\Main\Config\Option::set('magnifico.phinx', 'manager_file', '/app/www/manager.php');