我在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;
}
答案 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;
}
}