2

User と Lesson の 2 つのエンティティがあります。

ユーザーは Sonata ユーザーの拡張であり、

Application\Sonata\UserBundle\Entity\User

レッスンは自分のバンドル「LessonBundle」にあります

各レッスンは、フィールド チューターの下のユーザーによって所有されます。

class Lesson
{
    /**
     * @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User", inversedBy="lessons")
     * @ORM\JoinColumn(name="tutor_id", referencedColumnName="id")
     */
    protected $tutor;

/**
     * Set tutor
     *
     * @param \Application\Sonata\UserBundle\Entity\User $tutor
     * @return Lesson
     */
    public function setTutor(\Application\Sonata\UserBundle\Entity\User $tutor = null)
    {
        $this->tutor = $tutor;

        return $this;
    }

    /**
     * Get tutor
     *
     * @return \Application\Sonata\UserBundle\Entity\User 
     */
    public function getTutor()
    {
        return $this->tutor;
    }
}

ユーザーのレッスンを正常に追加するフォームを設定しましたが、レッスンのリストにアクセスしようとすると:

$repository = $this->getDoctrine()
                        ->getRepository('LessonBundle:Lesson');

//Problem is triggered here
$lessons = $repository->findAll();

次のエラーが表示されます。

Class LessonBundle\Entity\User does not exist

スタックトレース

in /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php

233 行目 -+ } // タイプ ヒント クラスも選択する必要があります。$paramClass->getName() . ' '; } else if ($param->isArray()) { $parameterString .= '配列'; /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php の ReflectionParameter ->getClass () で 233 行目 -+ ProxyFactory で ->_generateMethods (object(ClassMetadata)) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php の 155 行目 -+ ProxyFactory ->generateProxyClass (object(ClassMetadata), '/home/dan/sites/mysite/app/cache/dev/doctrine/orm/Proxies/ CG _LessonBundleEntitySubject.php', '; /** * このクラスは DOCTRINE ORM によって生成されました。 DO NOT EDIT THIS FILE. */ class extends \ implements \Doctrine\ORM\Proxy\Proxy { private $_entityPersister; private $ identifier; public $ _isInitialized = false; public function construct($entityPersister, $identifier) { $this-> _entityPersister = $entityPersister; $this->_identifier = $identifier; } /** @private */ public function _ load() { if (!$this-> _isInitialized && $this->_entityPersister) { $this-> isInitialized = true; if (method_exists($this, "wakeup ")) { // これを _ isInitialized _to 無限再帰を回避した後、 // ただし ClassMetadata::newInstance() が提供するものをエミュレートするために // ロードする前に呼び出します。 $this->__wakeup(); } if ($this->_entityPersister ->load($this->_identifier, $this) === null) { throw new \Doctrine\ORM\EntityNotFoundException(); } unset($this->_entityPersister, $this->_identifier); } } /* * @private */ public function _ isInitialized() { return $this-> _isInitialized ; } public function sleep() { } public function _ clone() { if (!$this-> _isInitialized && $this->_entityPersister) { $this-> isInitialized=真; $class = $this->_entityPersister->getClassMetadata(); $original = $this->_entityPersister->load($this->_identifier); if ($original === null) { throw new \Doctrine\ORM\EntityNotFoundException(); } foreach ($class->reflFields as $field => $reflProperty) { $reflProperty->setValue($this, $reflProperty->getValue($original)); unset($this->_entityPersister, $this->_identifier); /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Proxy/ProxyFactory.php の 90 行目 -+ ProxyFactory ->getProxy ('LessonBundle\Entity\Subject' , array('id' => '1')) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php の 2576 行目 -+ UnitOfWork ->createEntity (' LessonBundle\Entity\Lesson', array('DEEP NESTED ARRAY ), 'location_id11' => array( DEEP NESTED ARRAY))、array()) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php の 50 行目 -+ SimpleObjectHydrator で ->hydrateAllData () in / home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php 111 行目 -+ AbstractHydrator で ->hydrateAll (object(PDOStatement), object(ResultSetMapping), array( 'deferEagerLoads' => true)) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php の 848 行目 -+ BasicEntityPersister で ->loadAll (array(), null, null, null) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php の 157 行目 -+ EntityRepository ->findBy (array()) /home/dan/sites/mysite/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php の 141 行目 -+ EntityRepository で ->findAll () in /home/dan/sites /mysite/src/LessonBundle/Controller/LessonController.php 21 行目 -+ LessonController ->listAction () at call_user_func_array (array(object(LessonController), 'listAction'), array()) in kernel.root_dir/bootstrap. 1426 行の php.cache -+ HttpKernel ->handleRaw (object(Request), '1') in kernel.root_dir/bootstrap.php.cache 行 1390 -+ HttpKernel ->handle (object(Request), ' 1566 行目の kernel.root_dir/bootstrap.php.cache の 1', true) -+ HttpKernel で ->kernel.root_dir/bootstrap.php のハンドル (object(Request), '1', true)。cache at line 617 -+ at Kernel ->handle (object(Request)) in /home/dan/sites/mysite/web/app_dev.php at line 29 -+

Application\Sonata\UserBundle ではなく、LessonBundle で User クラスを探している理由がわかりません。

アドバイスをいただければ幸いです。

ありがとう

4

1 に答える 1

0

それを見つけた。まったく別のクラスの間違った場所にあるクラスへの参照がありました!

于 2013-02-10T11:09:54.397 に答える