2014-02-17 5 views
1

Я не могу найти ошибку.Dont found repository-class

Я использую Symfony 2.4.2 и пытаюсь создать собственный репозиторий.

Правильно, что файл не существует в папке «Сущность», но также, когда я перемещаю репозиторий в папку «Сущность», он не работает.

я получил следующее сообщение об ошибке:

Class 'Mbs\NiederlassungBundle\Entity\Niederlassungs' does not exist 

То использований в моем контроллере:

namespace Mbs\AllgemeinBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Bundle\SwiftmailerBundle; 
use Mbs\NiederlassungBundle\Entity\GebietStadt; 
use Mbs\NiederlassungBundle\Entity\Niederlassung; 

use Mbs\NiederlassungBundle\Repository\NiederlassungsRepository; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\DependencyInjection\ContainerInterface; 
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; 

В моей функции я стараюсь следующий код:

if (in_array($this->get('kernel')->getEnvironment(), array('test', 'dev'))) { 
    $em = $this->getDoctrine()->getManager(); 
    $responsibleDepartmentEmail = $em->getRepository('MbsNiederlassungBundle:Niederlassungs') 
     ->findResponsibleDepartment($searchInput); 

    var_dump($responsibleDepartmentEmail);die(); 
} 

И в repositoryfile находится под папкой Mbs/NiederlassungBundle/репозиторий

namespace Mbs\NiederlassungBundle\Repository; 

use Doctrine\ORM\EntityRepository; 

class NiederlassungsRepository extends EntityRepository 
{ 
public function findResponsibleDepartment($suche) 
{ 

    $arrTerm = explode(" ", $suche); 

    $query = $this->_em->createQueryBuilder() 
     ->select('nl.email') 
     ->from('MbsNiederlassungBundle:GebietStadt', 'gs') 
     ->innerJoin('MbsNiederlassungBundle:Niederlassung', 'nl', 'WITH', 'nl.id = gs.idNiederlassung'); 


    for ($i = 0; $i < count($arrTerm); $i++) { 
     $ph = 'plz'.$i; 

     $query->orWhere('gs.plz LIKE :' . $ph); 
     $query->setParameter($ph, $arrTerm[$i]); 
    } 

    $result = $query->getQuery()->getResult(); 

    if (count($result) > 0) { 
     $email = $result[0]["email"]; 
     return $email; 
    } else { 
     return false; 
    } 
} 
} 

Я не нашел, почему я не мог назвать этот репозиторий.

ответ

2

Убедитесь, что вы добавили аннотацию @ORM\Entity(repositoryClass="...") к своему объекту Niederlassung.

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity(repositoryClass="path_to_your_repository") 
* ... 
*/ 
class Niederlassung 
{ 
    // ... 
+0

имен Mbs \ NiederlassungBundle \ Entity; Использование Doctrine \ ORM \ Отображение как ORM; /** * Niederlassung * * @ORM \ Table (имя = "Niederlassung") * @ORM \ Entity (repositoryClass = "Mbs \ NiederlassungBundle \ NiederlassungsRepository") */ класс Niederlassung // Это теперь у меня в моем Niederlassungsentity, но он не нашел его –

+1

@ORM \ Entity (repositoryClass = "Mbs \ NiederlassungBundle \ NiederlassungsRepository") должно быть @ ORM \ Entity (repositoryClass = "Mbs \ NiederlassungBundle \ Repository \ NiederlassungsRepository") –

0

Пространство имен класса Mbs/NiederlassungBundle/Repository неверно. Использование пространства имен Mbs \ AllgemeinBundle \ Controller. Symfony не найден класс, потому что в разностном пространстве имен

+0

Но репозиторий находится под Niederlassung, мой контроллер, где я называю это, находится под Allgemein –

0

ваше лицо должно быть:

namespace Mbs\NiederlassungBundle\Entity; 
    use Doctrine\ORM\Mapping as ORM; 
    /** * Niederlassung 
    * 
    * @ORM\Table(name="niederlassung") 
    * @ORM\Entity(repositoryClass="Mbs\NiederlassungBundle\Repository\Niederlassungs‌​Repository") 
    */ 
    class Niederlassung{} 

лучшая практика, чтобы создать свой репозиторий класса в папке Entity

+0

Я переместил репозиторий в Entity Folder, но он не находит класс. Это ужасно[email protected] \ Entity (repositoryClass = "Mbs \ NiederlassungBundle \ Entity \ Niederlassungs Repository" –

+0

изменило пространство имен вашего репозитория класса на: namespace Mbs \ NiederlassungBundle \ Entity; –

+0

да, я также сделал: namespace Mbs \ NiederlassungBundle \ Сущность, использовать Doctrine \ ORM \ EntityRepository; класс NiederlassungsRepository расширяет EntityRepository –