【问题标题】:Symfony2 doesn't seem to recognize my repository classSymfony2 似乎无法识别我的存储库类
【发布时间】:2014-07-24 17:55:14
【问题描述】:

我遇到错误未定义的方法“findAllCtrs”。方法名称必须以 findBy 或 findOneBy 开头!

我已经尝试过 StackOverflow 上有关此问题的所有其他解决方案。我已经清除了缓存,清除了元数据缓存,检查了命名空间和文件夹实体,但仍然没有修复。

这是我的实体:

namespace CFS\Bundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Ref
 *
 * @ORM\Table(name="ref", indexes={@ORM\Index(name="refno", columns={"refno"}), @ORM\Index(name="ctrno", columns={"ctrno"})})
 * @ORM\Entity(repositoryClass="CFS\Bundle\Entity\RefRepository")
 */
 class Ref
{

我的存储库类:

namespace CFS\Bundle\Entity;

use Doctrine\ORM\EntityRepository;

class RefRepository extends EntityRepository
{
  public function findAllCtrs()
  {
     $query = $this->getEntityManager()
        ->createQuery('
            SELECT
                r.refno, r.ctrno
            FROM
                CFSBundle:Ref r
            ORDER BY
                r.refno DESC
            ');

    try {
        return $query->getResult();
    } catch(\Doctrine\ORM\NoResultException $e) {
        return null;
    }
}

}

我尝试在我的控制器中调用该方法:

 $em = $this->getDoctrine()->getManager();

    $containers = $em->getRepository('CFSBundle:Ref')
            ->findAllCtrs();

我确实注意到,当我在命令行php app/console doctrine:generate:entities CFSBundle 中生成实体时,它无法识别我的 RefRepository.php 文件。我还能错过什么?

【问题讨论】:

  • 你有一个 Resources\config\doctrine\Ref.orm.yml 文件吗?
  • @Cerad,是的,我应该寻找什么?
  • @Cerad,它实际上是一个 xml 而不是 .yml
  • @Cerad,哦,我明白了。注释不能与其他格式混合。删除了.xml,它工作了!谢谢!

标签: symfony doctrine-orm


【解决方案1】:

我也遇到了类似的错误,在花了一天时间寻找解决方案后,我在引用存储库类的注释中发现了一个错字。
但我没有看到您提供的代码有错误,因此它应该可以工作......

你读过https://stackoverflow.com/a/15184084/1781752 吗?
混合 yml 映射和注释似乎存在问题。

【讨论】:

  • 你是对的!这是注释和其他格式混合的问题。
猜你喜欢
  • 2011-01-12
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多