я использую hautelook/AliceBundle
(который использует nelmio/alice
а также fzaninotto/Faker
) для создания светильников для приложения. У меня есть сущность Доктрина Group
который является вложенным множеством объектов (используя функциональность дерева, предоставляемую StofDoctrineExtensionsBundle). Что я не могу понять, так это как я могу сгенерировать данные осветителей для сущности вложенного набора — убедиться, что группы генерируются в виде дерева с точными корневыми идентификаторами и родителями. Спасибо за любое руководство.
Мой текущий файл фикстуры так же прост, как;
MyBundle\Entity\Group:
group{1..25}:
title: <word()>
Я заставил его работать, вручную определяя группы для каждого уровня вложенного набора следующим образом;
MyBundle\Entity\Group:
group_root{1..5}:
title: <word()>
group_level_1{1..50}:
parent: '@group_root*'
title: <word()>
Вы можете создать свою сущность (в моем примере это будет 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()
— контролирует, какая сущность будет сгенерирована первой и второй