Search code examples
symfonyfixturesnelmio-alicealice-fixtures

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


If there's already answer to my question then sorry and please point me in the right direction because I can't find anything.

Let's say I have two Bundles. Each bundle has fixures.yml file and loader file. Loaders and fixtures are working fine when they are not depending on each other.

However when I am referencing fixtureA from fixtureB I get duplicated record in database.

E.g:

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

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

When they are in separated files - duplicated row. When they are in the same file everything is ok.

Why it's being loaded twice?

I even tried this:

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

No luck.

Evey time I am trying to use user object in story fixtures alice tries to save it into db again.

Best Regards, Robert


Solution

  • I did a little research and talked to people - it looks like it's a possible bug. You can learn more here:

    Nelmio/Alice 2.x Duplicated Row

    Also I would like to share my work around:

    I wanted to keep things separated and clean. Instead of keeping all fixtures in one file in one bundle you can move it to App/DataFixtures/ORM directory. However Symfony will not look for fixtures in this directory. You can:

    • add path to the fixtures in console command:

      doctrine:fixtures:load --fixtures=/var/www/story/app/DataFixtures/ORM
      
    • create alias for above solution

    • override DoctrineFixturesBundle - how to do this

    I hope this will help if you have similar issue.