不要找到存储库类

时间:2014-02-17 14:58:47

标签: php symfony doctrine-orm

我找不到错误。

我正在使用Symfony 2.4.2并尝试创建自定义存储库。

它是正确的,文件不存在于文件夹“Entity”中,但是当我将存储库移动到文件夹“Entity”时,它也不起作用。

我收到以下错误:

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();
}

存储库文件位于Mbs / NiederlassungBundle / Repository

文件夹下
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;
    }
}
}

我没找到,为什么我不能打电话给这个知识库。

3 个答案:

答案 0 :(得分:2)

确保已将@ORM\Entity(repositoryClass="...")注释添加到Niederlassung实体。

use Doctrine\ORM\Mapping as ORM;

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

答案 1 :(得分:0)

类Mbs / NiederlassungBundle / Repository的命名空间是错误的。 使用名称空间Mbs \ AllgemeinBundle \ Controller。 Symfony没有找到该类,因为它位于差异名称空间

答案 2 :(得分: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文件夹

的最佳做法