patabugen/laravel-mssql-changes

一款用于从Laravel管理SQL Server(2008)变更跟踪并查看变更的包


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

管理Microsoft SQLServer中的跟踪变更,让您能够从Artisan和Laravel应用程序内部列出变更。

此包是为了从MSSQL 2008读取跟踪变更而编写的,尚未在其他版本上测试。

注意:此库用于 变更跟踪,它与 变更数据捕获(CDC) 不同。

安装

您可以通过composer安装此包

composer require patabugen/laravel-mssql-changes

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="mssql-changes-config"

使用方法

该包提供了Artisan命令以及程序化接口。

使用方法 - PHP

功能由操作提供,这些操作由Artisan命令使用以提供CLI访问。

请参阅每个操作上的 asCommand 方法,以获取从PHP调用库的实际示例。

获取表的全部变更

    use Patabugen\MssqlChanges\Actions\ListTableChanges;
    use Patabugen\SqlChanges\Table;
    use Patabugen\SqlChanges\Change;
    $table = Table::create('Contacts');
    /** @var Illuminate\Support\Collection $changes */
    $changes = ListTableChanges::handle($table);
    $changes->each(function(Change $change) {
        var_dump($change->toArray();
    });

通过版本过滤获取表的全部变更

    use Patabugen\MssqlChanges\Actions\ListTableChanges;
    use Patabugen\SqlChanges\Table;
    use Patabugen\SqlChanges\Change;
    $table = Table::create('Contacts');
    /** @var Illuminate\Support\Collection $changes */
    $changes = ListTableChanges::make()
        ->fromVersion(100)
        ->toVersion(200)
        ->handle($table);
    $changes->each(function(Change $change) {
        var_dump($change->toArray();
    });

使用方法 - Artisan

注意:此包处于早期阶段,这些命令可能还不适用。

将默认数据库从您的配置中使用,或者设置环境变量 MSSQL_CHANGES_CONNECTION 为要使用的连接名称。

启用数据库的变更跟踪

artisan mssql:enable-database-change-tracking

启用表的变更跟踪

artisan mssql:enable-table-change-tracking {TableName}

禁用表的变更跟踪

artisan mssql:disable-table-change-tracking {TableName}

列出所有表中所有变更

artisan mssql:show-changes

通过表过滤变更

artisan mssql:show-table-changes {tableName}

通过版本过滤变更

使用 --from 和/或 --to 仅显示给定变更之前或之后的变更(包含)。

artisan mssql:show-changes --from=200 --to=209 artisan mssql:show-table-changes --from=200 --to=209

$ php artisan mssql:list-table-changes Addresses
+-----------+-------------+---------------------+----------------+
| Table     | Primary Key | Columns Changed     | Change Version |
+-----------+-------------+---------------------+----------------+
| Addresses | 91750       | Address1, upsize_ts | 5              |
+-----------+-------------+---------------------+----------------+

待办事项

我想添加这些命令或功能

  • 为测试创建测试数据库
  • artisan mssql:disable-change-tracking
  • artisan mssql:list-status - 显示数据库/表的状态

测试

您需要一个运行中的SQL Server实例和已创建的数据库,请参阅 phpunit.xml.dist 以获取默认值。将其复制到 phpunit.xml 以自定义测试。

如果您尚未这样做,您可能需要采取 额外步骤 以允许PHP连接到MSSQL。

注意:在编写测试时,测试尚未完全可用,因为我已经开始创建测试数据库,但尚未完成。您可能能够从TestCase中删除迁移/设置,并手动创建一个名为“Contacts”的表,并启用跟踪。

测试还有一些硬编码的数字,这意味着它们经常会出错。可以通过完成上述任务使RefreshDatabase工作,或者在使用GetVersion过滤每个测试中的结果之前进行断言来解决。

composer test

更新日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

贡献

此包是为了解决一个一次性项目中特定问题而创建的,因此不太可能获得长期更新。

我已经将其作为包发布,以防将来可能帮助到其他人。

非常欢迎拉取请求,尤其是如果它们包括测试或完善现有/核心功能的话。请随意提交一个问题来讨论您希望进行的更改。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。