我找不到错误。
我正在使用Symfony 2.4.2并尝试创建自定义存储库。
它的权利,该文件不存在于"实体"文件夹中,但是当我将存储库移动到文件夹"实体"时,它不起作用。
我收到以下错误:
Class 'MbsNiederlassungBundleEntityNiederlassungs' does not exist
这是我的控制器中的用途:
namespace MbsAllgemeinBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyBundleSwiftmailerBundle;
use MbsNiederlassungBundleEntityGebietStadt;
use MbsNiederlassungBundleEntityNiederlassung;
use MbsNiederlassungBundleRepositoryNiederlassungsRepository;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentDependencyInjectionContainerInterface;
use SymfonyComponentHttpKernelExceptionNotFoundHttpException;
在我的函数中,我尝试以下代码:
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 MbsNiederlassungBundleRepository;
use DoctrineORMEntityRepository;
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;
}
}
}
我没有找到,为什么我不能调用这个存储库。
将@ORMEntity(repositoryClass="...")
注释添加到Niederlassung
实体。
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass="path_to_your_repository")
* ...
*/
class Niederlassung
{
// ...
类 Mbs/NiederlassungBundle/Repository 的命名空间是错误的。使用命名空间 Mbs\AllgemeinBundle\Controller。Symfony找不到该类,因为处于不同的命名空间中
您的实体必须是:
namespace MbsNiederlassungBundleEntity;
use DoctrineORMMapping as ORM;
/** * Niederlassung
*
* @ORMTable(name="niederlassung")
* @ORMEntity(repositoryClass="MbsNiederlassungBundleRepositoryNiederlassungsRepository")
*/
class Niederlassung{}
将类存储库创建到实体文件夹的最佳做法