dpdbu24262 2011-11-13 20:17
浏览 21
已采纳

无法使用DataFixtures加载数据[关闭]

This is my code:

// 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.
Lorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.
Lorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.
Lorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.
Lorem ipsum dolor sit ameLorem ipsum dolor sit amet, consectetur adipiscing eletra electrify denim vel ports.
Lorem 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@mail.com');
        $user1->setPassword('hah');


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


    }

    function getOrder()
    {
        return 1 ;
    }

}

But I'm getting this error:

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\ArrayCollection@000000003d8f1786000000003709f23. 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条回答 默认 最新

  • dongshi3361 2011-11-13 22:24
    关注

    Seems that the tag you are fetching from the line $this->getReference('tag-1') hasn't been through a $em->persist($tag) its self.

    Either persist your tag first before flushing the entity manager with the tag on the article or you can add cascade={"persist"} to your collection on the Article class and use your current code.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入