2016-07-02 11 views
1

私はhautelook/AliceBundlenelmio/alicefzaninotto/Fakerを使用)を使用して、アプリケーションのフィクスチャを生成しています。私はDoctrineエンティティGroupをネストされたセットエンティティ(StofDoctrineExtensionsBundleによって提供されるツリー機能を使用して)を持っています。私が理解できないことは、ネストされたセットエンティティのためのフィクスチャデータを生成する方法です。正確なルートIDと親を持つツリーとしてグループが生成されるようにします。ご指摘ありがとうございます。アリス・フィクスチャでネストされたセット・エンティティのDoctrineフィクスチャ・データを生成する

現在のフィクスチャファイルは次のように簡単です。

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

答えて

1

あなたは、この

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

とdepencyとしてそれを使用するように(私の例では、それはUserになります)あなたのエンティティを生成することができます。

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ウィッヒエンティティ最初と2番目に生成されます

+0

ありがとうございますが、これは実際に私が探しているものではありません。私は手動でYAMLファイルにフィクスチャを定義し、PHPフィクスチャを作成することなく他のグループを参照することができましたが、Aliceがネストされたセット関係を自動的に処理できる方法があるかどうかは疑問でした。 –

+0

私はあなたの質問を理解していますが、それは私がどのようにしたかの一例に過ぎません。 –

+0

十分に公正、私は私の望むように動作するとにかく私の答えの方法に行ってきました –

2

私はそれを動作させるネストされたセットの各レベルのグループを手作業で定義する。

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

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

はかなりシンプルに見える、共有ありがとう –

関連する問題