Генерация данных фикстур Doctrine для сущности Nested Set с помощью Алисы

я использую hautelook/AliceBundle (который использует nelmio/alice а также fzaninotto/Faker) для создания светильников для приложения. У меня есть сущность Доктрина Group который является вложенным множеством объектов (используя функциональность дерева, предоставляемую StofDoctrineExtensionsBundle). Что я не могу понять, так это как я могу сгенерировать данные осветителей для сущности вложенного набора — убедиться, что группы генерируются в виде дерева с точными корневыми идентификаторами и родителями. Спасибо за любое руководство.

Мой текущий файл фикстуры так же прост, как;

MyBundle\Entity\Group:
group{1..25}:
title: <word()>

2

Решение

Я заставил его работать, вручную определяя группы для каждого уровня вложенного набора следующим образом;

MyBundle\Entity\Group:
group_root{1..5}:
title: <word()>

group_level_1{1..50}:
parent: '@group_root*'
title: <word()>
4

Другие решения

Вы можете создать свою сущность (в моем примере это будет User) как это

class LoadUserData extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
$admin = new User();
$admin->setUsername('admin');
$admin->setFirstName('John');
$manager->persist($admin);
$manager->flush();
$this->addReference('test-user', $admin);
}
public function getOrder()
{
return 1;
}
}

а затем использовать его как зависимость:

class LoadQuestionData extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
$question = new Question();
$question->setSubject('Test Question');

/** @var User $user */
$user = $this->getReference('test-user');
$question->setUser($user);
$manager->persist($question);
$manager->flush();
}
public function getOrder()
{
return 2;
}
}

getOrder() — контролирует, какая сущность будет сгенерирована первой и второй

1

По вопросам рекламы [email protected]