2016-07-11 6 views
0

カスタムエンティティリポジトリを構築しようとすると問題が発生します。Silex DoctrineORM:カスタムエンティティリポジトリ

<?php 
    namespace Application\Database\EntityRepository; 

    use Application\Bootstrap as Bootstrap; 
    use Doctrine\Orm\EntityRepository; 

    class UserRepository extends \Doctrine\Orm\EntityRepository 
    { 

     public function getPasswordByUsername($username) 
     { 
      $query = $app['orm.em']->createQuery('SELECT u.password FROM Application\Database\Entities\Users u WHERE (u.username = :username)'); 
      $query->setParameter('username', $username); 

      return $query->getOneOrNullResult(); 
     } 
    } 

そして、私のブートストラップファイルにこの方法は、ブートストラップクラスのコンストラクタでロードされている:私はこれを行っているCustomRepository.phpファイルで

"PHP message: PHP Fatal error: Class 'Doctrine\Orm\EntityRepository' not found in /home/user/projects/app/src/Application/Database/EntityRepository/UserRepository.php on line 8 

use Silex\Provider\DoctrineServiceProvider as silexDocProv; 
use Silex\Provider\SessionServiceProvider as silexSessProv; 
use Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider as docProv; 

private function initDatabase() 
{ 
    $this->app->register(new silexDocProvj(), array(
     'db.options' => array(
      'driver' => 'pdo_mysql', 
      'host'  => getenv('DBHOST'), 
      'dbname' => getenv('DBNAME'), 
      'user'  => getenv('DBUSER'), 
      'password' => getenv('DBPASS') 
     ) 
    )); 

    $this->app->register(new docProv(), array(
     'orm.em.options' => array(
      'mappings' => array(
       array(
        'type' => 'yml', 
        'namespace' => 'Application\Database\Entities', 
        'path' => __DIR__ . '/../../app/Config/Mappings' 
       ) 
      ) 
     ) 
    )); 
} 

そして最後に、私のマッピングファイルがこれを持っている:

Application\Database\Entities\Users: 
    type: entity 
    table: users 
    repositoryClass: \Application\Database\EntityRepository\UserRepository 

答えて

0

名前空間は、大文字と小文字が区別されます。

変更

Doctrine\Orm\EntityRepository 

に:あなたは

use Doctrine\ORM\EntityRepository; 
によってクラスをインポートしたので

Doctrine\ORM\EntityRepository 

また

extends \Doctrine\Orm\EntityRepository 

で完全な名前空間のための必要はありません

今すぐできるのは次のとおりです:

extends EntityRepository 
関連する問題