加载灯具的错误symphony 2 [OutOfBoundsException]参​​考:(图像)不存在

时间:2015-10-16 16:56:19

标签: symfony

我在Article实体和Image实体之间有一个OneToOne关系,Article实体是所有者,我创建了fixtures数据文件来加载数据库,我使用了" faker"格式化类型文件,当我运行命令时:

$ app / console doctrine : fixtures : load 

我收到此错误消息:

:[OutOfBoundsException]                                                                                                                                                      
Reference to: (image) does not exist  

在我的灯具文件中: 纳秒\ NikahBundle \ DataFixtures \ ORM \ LoadArticleData.php:

<?php
namespace ns\NikahBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;

use ns\NikahBundle\Entity\Article;


class LoadArticleData extends AbstractFixture implements    OrderedFixtureInterface
{
const MAX_NB_ARTICLES = 10;

public function load(ObjectManager $manager)
{

    $faker = \Faker\Factory::create();
    for ($i = 0; $i < self::MAX_NB_ARTICLES; ++$i) {
        $article = new Article();
        $article->setAuteur($faker->text(250));
        $article->setTitre($faker->text(250));
        $article->setContenu($faker->text(250));
        $article->setDeleted($faker->boolean);

        $image = $this->getReference('image');
        $article->setImage($image);
        $manager->persist($article);
    }

    $manager->flush();
}
public function getOrder(){
    return 1;
}
}

在我的ns \ NikahBundle \ DataFixtures \ ORM \ LoadImageData.php中:

<?php
 namespace ns\NikahBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;

use ns\NikahBundle\Entity\Image;


class LoadImageData extends AbstractFixture implements OrderedFixtureInterface

{
 const MAX_NB_IMAGES = 5;

public function load(ObjectManager $manager)
{
    $faker = \Faker\Factory::create();

    for ($i=0; $i<self::MAX_NB_IMAGES; ++$i){
        $image = new Image();
        $image->setUrl($faker->imageUrl($width = 640, $height = 480));
        $image->setAlt($faker->text);

        $manager->persist($image);

        $this->addReference('image', $image);

    }
        $manager->flush();
}

   public function getOrder(){
       return 2;
   }

1 个答案:

答案 0 :(得分:2)

在我看来,LoadImageData应该在LoadArticleData之前启动。

class LoadImageData extends AbstractFixture implements OrderedFixtureInterface
{
    / *** /

    public function getOrder(){
        return 1;
    } 
} 

class LoadArticleData extends AbstractFixture implements OrderedFixtureInterface
{

    / *** /

    public function getOrder(){
       return 2;
    }
}