Nelmio/Alice 2.x Symfony 3,在不同的包中加载相关的固定装置

Nelmio/Alice 2.x Symfony 3 , Loading Related Fixtures in Different Bundles

如果我的问题已经有了答案,那么抱歉,请指出正确的方向,因为我找不到任何东西。

假设我有两个捆绑包。每个包都有 fixures.yml 个文件和加载程序文件。 装载机和固定装置在彼此不依赖时工作正常。

然而,当我从 fixtureB 引用 fixtureA 时,我在数据库中得到了重复的记录。

例如:

user_{1..10}:
email (unique): '<firstName()>+<randomNumber()>@gmail.com'
plainPassword: 'secret' 

story_{1..10}:
    user: "@user_<current()>"
    title: '<word>'

当它们位于单独的文件中时 - 重复行。当它们在同一个文件中时,一切正常。

为什么它被加载了两次?

我什至试过这个:

$objects = Fixtures::load(__DIR__ . '/fixtures.yml', $manager, ['persist_once'=>true]);

运气不好。

每次我尝试在故事装置中使用用户对象时,爱丽丝都会再次尝试将其保存到数据库中。

此致, 罗伯特

我做了一些研究并与人们交谈 - 看起来这是一个可能的错误。您可以在这里了解更多信息:

Nelmio/Alice 2.x Duplicated Row

我也想分享我的工作:

我想把东西分开并保持干净。您可以将其移动到 App/DataFixtures/ORM 目录,而不是将所有灯具放在一个文件中。然而 Symfony 不会在这个目录中寻找 fixtures。您可以:

  • 在控制台命令中添加灯具路径:

    doctrine:fixtures:load --fixtures=/var/www/story/app/DataFixtures/ORM
    
  • 为上述解决方案创建别名

  • 覆盖 DoctrineFixturesBundle - how to do this

如果您遇到类似问题,希望这对您有所帮助。