我找不到错误。
我正在使用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;
}
}
}
我没找到,为什么我不能打电话给这个知识库。
答案 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\NiederlassungsRepository")
*/
class Niederlassung{}
将您的类存储库创建到Entity文件夹
的最佳做法