2011-11-13 60 views
-2

這是我的代碼:無法使用DataFixtures加載數據

// my article fixture 

<?php 

namespace My\BlogBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use My\BlogBundle\Entity\Article; 
use My\BlogBundle\Entity\User; 
use My\BlogBundle\Entity\Tag; 

class ArticleFixtures extends AbstractFixture implements OrderedFixtureInterface 
{ 

    function load($em) 
    { 
     $article1 = new Article(); 
     $article1->setCreatedAt(new \Datetime); 
     $article1->setTitle('hello my title test'); 
     $article1->setContent('Lorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.\nLorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.\nLorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.\nLorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.\nLorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.\nLorem ipsum dolor sit ame'); 

     $article1->setUser($em->merge($this->getReference('user-1'))); 
     $article1->addTag($em->merge($this->getReference('tag-1'))); 

     $em->persist($article1); 
     $em->flush() ; 

    } 

    function getOrder() 
    { 
     return 3 ; 
    } 

} 



// my tag fixture 


<?php 

namespace My\BlogBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use My\BlogBundle\Entity\Tag; 

class TagFixtures extends AbstractFixture implements OrderedFixtureInterface 
{ 

    function load($em) 
    { 
     $tag = new Tag(); 
     $tag->setNom('tagTest') ; 

     $em->persist($tag); 
     $em->flush(); 
     $this->addReference('tag-1' ,$tag); 


    } 

    function getOrder() 
    { 
     return 2; 
    } 

} 

// my user fixtures 

<?php 

namespace My\BlogBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use My\BlogBundle\Entity\User; 

class UserFixtures extends AbstractFixture implements OrderedFixtureInterface 
{ 
    function load($em) 
    { 
     $user1 = new User() ; 
     $user1->setPseudo('xsaidx'); 
     $user1->setEmail('[email protected]'); 
     $user1->setPassword('hah'); 


     $em->persist($user1); 
     $em->flush(); 
     $this->addReference('user-1' ,$user1);  


    } 

    function getOrder() 
    { 
     return 1 ; 
    } 

} 

但我發現了這個錯誤:

A new entity was found through the relationship 'My\BlogBundle\Entity\Article#tags' that was not configured to cascade persist operations for entity: Doctrine\Common\Collections\[email protected] Explicitly persist the new entity or configure cascading persist operations on the relationship. If you cannot find out which entity causes the problem implement 'My\BlogBundle\Entity\Tag#__toString()' to get a clue.

回答

1

看來你是從線路獲取標籤$this->getReference('tag-1')不是招沒有通過$em->persist($tag)其自我。

要麼在使用文章上的標籤沖洗實體管理器之前先堅持標籤,要麼將cascade={"persist"}添加到您的Article類中,並使用當前的代碼。