theofidry/alice-data-fixtures

Nelmio alice 扩展,用于持久化加载的 fixtures。

资助包维护!
theofidry

安装量: 21,208,615

依赖者: 75

建议者: 4

安全性: 0

星标: 307

关注者: 10

分支: 69

公开问题: 11

1.7.2 2024-07-05 21:18 UTC

README

Alice 3.x 不再包含持久化层,因此这个库提供了一个!

Package version Build Status Slack license

支持

  • Symfony 5.4+, 6.4+
  • Doctrine ORM 2.5+
  • Doctrine ODM 2.0+
  • Doctrine PHPCR 1.4+
  • Eloquent 8.12+

文档

  1. 安装
    1. 无 Symfony
    2. Symfony 与 Flex
    3. Symfony 无 Flex
      1. Doctrine ORM
      2. Doctrine ODM
      3. Doctrine PHPCR
      4. Eloquent ORM
      5. 配置
  2. 基本用法
  3. 配置
  4. 高级用法
    1. 处理器
    2. 排除清理表
    3. 在测试中使用
      1. PHPUnit
      2. Behat
  5. 贡献

配置

完整的配置参考如下:

# app/config/config.yml

# Default config
fidry_alice_data_fixtures:
    default_purge_mode: ~ # default is "delete" but you can change it to "truncate" or "no_purge"
    db_drivers:
        doctrine_orm: ~
        doctrine_mongodb_odm: ~
        doctrine_phpcr_odm: ~
        eloquent_orm: ~

对于每个驱动,如果检测到适当的包,例如 DoctrineORMBundle 用于 Doctrine 和 WouterJEloquentBundle 用于 Eloquent,将启用相关的服务。如果您想跳过这些检查,可以将特定驱动设置为 true。如果您想禁用特定驱动,只需将值强制设置为 false

基本用法

src/AppBundle/Resources/fixtures 中创建一个 fixtures 文件

# src/AppBundle/Resources/fixtures/dummy.yml

AppBundle\Entity\Dummy:
    dummy_{1..10}:
        name: <name()>
        related_dummy: '@related_dummy*'
# src/AppBundle/Resources/fixtures/related_dummy.yml

AppBundle\Entity\RelatedDummy:
    related_dummy_{1..10}:
        name: <name()>

然后您可以使用 LoaderInterface 加载这些文件

<?php

$files = [
    'path/to/src/AppBundle/Resources/fixtures/dummy.yml',
    'path/to/src/AppBundle/Resources/fixtures/related_dummy.yml',
];

// Choose your loader
$loader = $container->get('fidry_alice_data_fixtures.loader.doctrine');         // For Doctrine ORM
$loader = $container->get('fidry_alice_data_fixtures.loader.doctrine_mongodb'); // For Doctrine MongoDB ODM
$loader = $container->get('fidry_alice_data_fixtures.loader.doctrine_phpcr');   // For Doctrine PHPCR
$loader = $container->get('fidry_alice_data_fixtures.loader.eloquent');         // For Eloquent ORM

// Purge the objects, create PHP objects from the fixture files and persist them
$objects = $loader->load($files);

// $objects is now an array of persisted `Dummy` and `RelatedDummy`

警告:加载对象不会触发 clear()。这意味着如果您的测试依赖于一些 Doctrine 生命周期事件,那么其中一些可能不会按预期触发。请参阅 #84 以获取更多信息。

高级用法

查看高级用法入口

贡献

克隆项目

要启动数据库 Docker 容器,请运行 make start_databases

使用 make test 运行测试。

要停止数据库容器,请运行 make stop_databases