Nelmio/Alice 2.x Symfony 3, загрузка связанных приборов в разные пакеты

Если ответ на мой вопрос уже есть, извините, пожалуйста, укажите мне правильное направление, потому что я ничего не могу найти.

Допустим, у меня есть два пакета. Каждый пакет имеет файл fixures.yml и файл загрузчика. Погрузчики и арматура работают нормально, когда они не зависят друг от друга.

Однако, когда я ссылаюсь на fixtureA из fixtureB, я получаю дублированную запись в базе данных.

Например:

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]);

Неудачно.

Каждый раз, когда я пытаюсь использовать пользовательский объект в фикстурах истории, Алиса пытается снова сохранить его в БД.

С наилучшими пожеланиями, Роберт

1 ответ

Решение

Я провел небольшое исследование и поговорил с людьми - похоже, это возможная ошибка. Вы можете узнать больше здесь:

Нельмио / Алиса 2.x Дублированная строка

Также я хотел бы поделиться своей работой вокруг:

Я хотел держать вещи отделенными и чистыми. Вместо того чтобы хранить все приборы в одном файле в одном комплекте, вы можете переместить его в каталог App/DataFixtures/ORM. Однако Symfony не будет искать светильники в этом каталоге. Вы можете:

  • добавьте путь к приборам в консоли:

    doctrine:fixtures:load --fixtures=/var/www/story/app/DataFixtures/ORM
    
  • создать псевдоним для вышеуказанного решения

  • переопределить DoctrineFixturesBundle - как это сделать

Я надеюсь, что это поможет, если у вас есть аналогичная проблема.

Другие вопросы по тегам