2014-09-03 45 views
1

我使用ZF2與學說,我想用一個倉庫,但我有此錯誤:自定義存儲庫羅主義和ZF2

The class 'Application\Repository\EventRepository' was not found in the chain configured namespaces Application\Entity 

實體:

namespace Application\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity(repositoryClass="Application\Repository\EventRepository") 
*/ 
class Event { 
    // ... 
} 

儲存庫:

namespace Application\Repository; 

use Doctrine\ORM\EntityRepository; 

class EventRepository extends EntityRepository 
{ 
    public function test() 
    { 
     // ... 
    } 
} 

在控制器:

$this->getEntityManager()->getRepository('Application\Repository\EventRepository')->test() 

在我module.config.php,我有這樣的:

return array(
    // ... 
    'doctrine' => array(
     'driver' => array(
      'application_entities' => array(
       'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
       'cache' => 'array', 
       'paths' => array(__DIR__ . '/../src/Application/Entity') 
      ), 
      'orm_default' => array(
       'drivers' => array(
        'Application\Entity' => 'application_entities' 
       ) 
      ) 
     ), 
     // ... 
    ) 
); 

於是,我就改變:

return array(
    // ... 
    'doctrine' => array(
     'driver' => array(
     'application_entities' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/Application/Entity') 
     ), 
     'application_repositories' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/Application/Repository') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       'Application\Entity'  => 'application_entities', 
       'Application\Repository' => 'application_repositories' 
      ) 
     ) 
    ), 
     // ... 
    ) 
); 

而且我有一個新的錯誤:

Class "Application\Repository\EventRepository" sub class of "Doctrine\ORM\EntityRepository" is not a valid entity or mapped super class. 

問題是什麼?

謝謝

回答

0

入住這 Custom Repositories您必須調用 $這個 - > getEntityManager() - > getRepository( '應用程序\實體\事件') - >試驗(+)

0

是skurty,SylarBg是正確的,而不是直接調用存儲庫,您需要調用通過其將調用發送到存儲庫的相關實體