使用Alice Fixtures

时间:2016-07-02 15:28:52

标签: php symfony faker nelmio-alice

我使用hautelook/AliceBundle(使用nelmio/alicefzaninotto/Faker)为应用生成灯具。我有一个Doctrine实体Group,它是一个嵌套的set实体(使用StofDoctrineExtensionsBundle提供的Tree功能)。我无法弄清楚我是如何为嵌套集实体生成夹具数据的 - 确保将组生成为具有准确根ID和父节点的树。感谢您提供任何指导。

我当前的夹具文件就像;

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

3 个答案:

答案 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不同。只需确保提供一个整数(圆形,地板,天花板,...)即可。