0

Symfony2 で従来のブログ アプリを実装していますが、"app/console doctrine:fixtures:load" がエラーを返します。私の BlogFixtures.php ファイルは次のようなものです:

<?php
namespace MGF\Bundles\WebBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use MGF\Bundles\WebBundle\Entity\Blog;
use MGF\Bundles\CRMBundle\Util\Util;

class BlogFixtures extends AbstractFixture implements FixtureInterface
{
    public function load(ObjectManager $em)
    {
        $blog1 = new Blog();

        $title = 'First post';
        $blog1->setTitle($title);

        $slug1 = Util::getSlug($title);
        $blog1->setSlug($slug1);

        $blog1->setImage('beach.jpg');
        $blog1->setTags('symfony2, php, paradise, symblog');
        $blog1->setCreated(new \DateTime('now'));
        $blog1->setUpdated($blog1->getCreated());

        $em->persist($blog1);

        $author1 = $em->getRepository('MGFBCBundle:User')->findOneByUser('sarah');
        $author1->addBlog($blog1);

        $em->persist($author1);
        $em->flush();
    }
}

そしてエラー:

app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue Y/N ?Y
  > purging database
  > loading MGF\Bundles\WebBundle\DataFixtures\ORM\BlogFixtures
PHP Fatal error:  Call to a member function addBlog() on a non-object in /var/www/METRO/src/MGF/Bundles/WebBundle/DataFixtures/ORM/BlogFixtures.php on line 33

Fatal error: Call to a member function addBlog() on a non-object in /var/www/METRO/src/MGF/Bundles/WebBundle/DataFixtures/ORM/BlogFixtures.php on line 33

どこが間違っているのかわかりません。ヒントはありますか?

前もって感謝します。

4

1 に答える 1

1

問題は、ユーザー「sarah」がフィクスチャからデータベースに存在していても、フィクスチャを再度ロードしようとすると、データベースがパージされることでした。したがって、ここで説明するように、フィクスチャから作成されたときにユーザーを参照し、参照によってそれらを取得する必要がありました。

http://symfony.com/doc/master/bundles/DoctrineFixturesBundle/index.html#sharing-objects-between-fixtures

備品の読み込みが再び機能しています。

于 2013-05-29T12:26:55.870 に答える