api-skeletons/zf-doctrine-data-fixture

该软件包已被弃用,不再维护。作者建议使用 api-skeletons/doctrine-data-fixture 软件包。

Doctrine 数据固定控制台路由与配置好的服务管理器

5.0.9 2019-02-02 22:48 UTC

README

Build status Gitter Patreon Total Downloads

此模块为 Zend Framework 2 提供了 Doctrine 固定命令行支持。通常,项目将具有针对不同对象管理器或模块(例如第三方 API)的多个固定集。在这种情况下,需要一个可以按组运行固定的工具。此外,必须将依赖注入提供给固定。为了满足这些需求,此模块使用一个按组可配置的 Zend 服务管理器。

版本发布

4.x 版本标签支持 PHP 5.6 和 7.0。

5.x 版本标签支持 PHP 7.1 及以上。

安装

此模块使用 composer 进行安装。有关 composer 文档,请参阅 getcomposer.org

$ composer require api-skeletons/zf-doctrine-data-fixture ^2.0

将此模块添加到应用程序的配置中

'modules' => [
   ...
   'ZF\Doctrine\DataFixture',
],

zf-component-installer

如果您使用 zf-component-installer,该插件将为您安装 zf-doctrine-data-fixture 作为模块。

配置

此模块基于 Doctrine 配置构建。实现固定点的模块中的配置是

return [
    'doctrine' => [
        'fixture' => [
            'group1' => [
                'object_manager' => 'doctrine.entitymanager.orm_default',
                'invokables' => [
                    'ModuleName\Fixture\FixtureOne' => 'ModuleName\Fixture\FixtureOne',
                ],
                'factories' => [
                    'ModuleName\Fixture\FixtureTwo' => 'ModuleName\Fixture\FixtureTwoFactory',
                ]
            ],
            'group2' => [
                'object_manager' => 'doctrine.entitymanager.orm_zf_doctrine_audit',
                ...
            ],
        ],
    ],
];

每个组都是一个 Zend 服务管理器 配置。这允许完全控制您的固定依赖注入。

列出固定点

index.php data-fixture:list [<group>]

列出所有对象管理器和它们的组,列出给定对象管理器的所有组,或指定对象管理器和组以列出组的所有固定点。

从命令行执行固定点

index.php data-fixture:import <group> [--purge-with-truncate] [--do-not-append]

需要 <group>

默认情况下,不附加,这经常用 --append 覆盖。附加现在是默认选项。这与新的 --do-not-append 相反。

选项

--purge-with-truncate 如果指定,将在运行固定点之前清除对象管理器的表。

--do-not-append 将在运行固定点之前删除数据库中的所有数据。

从代码执行固定点

对于单元测试或其他必须从代码中运行固定点的情况,您必须使用 build 获取 DataFixtureManager,并将组名传递给服务管理器,然后手动将固定点加载到 Loader 中。

use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
use ZF\Doctrine\DataFixture\Loader;

// Run audit fixtures
$dataFixtureManager = $application->getServiceManager()
    ->build('ZF\Doctrine\DataFixture\DataFixtureManager', ['group' => 'zf-doctrine-audit']);

$loader = new Loader($dataFixtureManager);
$purger = new ORMPurger();
$executor = new ORMExecutor($auditEntityManager, $purger);

foreach ($dataFixtureManager->getAll() as $fixture) {
    $loader->addFixture($fixture);
}

$executor->execute($loader->getFixtures(), true);

获取帮助

index.php data-fixture:help

重要提示

  • 您一次只能从命令行运行一个组。如果需要运行更多,请创建一个脚本来按顺序运行它们。
  • ServiceManager被注入到每个DataFixtureManager的getServiceLocator()中,因此您可以在此级别使用实例化器。这使得DataFixtureManager的工作方式类似于使用$serviceListener->addServiceManager()定义的插件管理器。
  • 您不能使用抽象工厂。每个固件都必须单独配置。

历史

此模块的1.0版本根据部分对象管理器别名分组。这限制了第三方固件的分组和使用ODM的灵活性。

此模块是hounddog/doctrine-data-fixture-module的几乎完全重写。所有模式都发生了变化,代码也减少了。该模块为我和社会社区服务了很长时间。