2016-07-02 10 views
1

Ich verwende hautelook/AliceBundle (die nelmio/alice und fzaninotto/Faker verwendet), um Fixtures für eine Anwendung zu generieren. Ich habe eine Doctrine-Entität Group, die eine verschachtelte Mengenentität ist (unter Verwendung der Tree-Funktionalität, die von StofDoctrineExtensionsBundle bereitgestellt wird). Was ich nicht herausfinden kann ist, wie ich Fixture-Daten für die verschachtelte Set-Entity generieren kann - stelle sicher, dass Gruppen als Baum mit genauen Root-IDs und Eltern generiert werden. Danke für jede Anleitung.Generieren von Doctrine-Fixture-Daten für Nested Set-Entitäten mit Alice-Fixtures

Meine aktuelle Fixture-Datei ist so einfach wie;

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

Antwort

1

Sie Ihr Unternehmen generieren können wie diese

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; 
    } 
} 

(in meinem Beispiel es User sein wird) und es dann als depency verwenden:

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() - controlls wich Einheit wird zuerst erzeugt und zweiten

+0

Danke, aber das ist nicht wirklich das, was ich suche. Ich könnte Fixtures manuell in YAML-Dateien definieren und auf andere Gruppen verweisen, ohne PHP-Fixtures erstellen zu müssen (wofür Alice sowieso ist), aber ich frage mich, ob es einen Weg gibt, wie Alice verschachtelte Set-Beziehungen automatisch verarbeiten kann. –

+0

Ich verstehe deine Frage, aber es war nur ein Beispiel, wie ich es gemacht habe. –

+0

Fair genug, ich bin mit der Methode in meiner Antwort sowieso gegangen, die funktioniert, wie ich wollte –

2

Ich habe es zur Arbeit b y die Gruppen für jede Ebene des geschachtelten Sets wie folgt manuell definieren;

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

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

sieht ziemlich einfach aus, danke fürs Teilen –