我使用hautelook/AliceBundle
(使用nelmio/alice
和fzaninotto/Faker
)为应用生成灯具。我有一个Doctrine实体Group
,它是一个嵌套的set实体(使用StofDoctrineExtensionsBundle提供的Tree功能)。我无法弄清楚我是如何为嵌套集实体生成夹具数据的 - 确保将组生成为具有准确根ID和父节点的树。感谢您提供任何指导。
我当前的夹具文件就像;
一样简单MyBundle\Entity\Group:
group{1..25}:
title: <word()>
答案 0 :(得分:5)
我已经通过手动为嵌套集的每个级别定义组来实现它,就像这样;
MyBundle\Entity\Group:
group_root{1..5}:
title: <word()>
group_level_1{1..50}:
parent: '@group_root*'
title: <word()>
答案 1 :(得分:1)
您可以像这样
生成您的实体(在我的示例中,它将是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()
- 控件将首先生成第一个实体和第二个
答案 2 :(得分:0)
要构建Binary_tree,请使用以下方法:
App\Entity\Group:
group1:
title: <word()>
# this is the tree root, do not set a parent
group{2..100}:
title: <word()>
parent: '@group<(floor($current/2))>'
您当然可以选择sth。与x/2
不同。只需确保提供一个整数(圆形,地板,天花板,...)即可。