php - ObjectManager 方法 createQuery() 似乎不存在

标签 php symfony

我有这样的类,它可以工作并从数据库返回反馈

namespace Acme\Bundle\AcmeBundle\Handler;

use Doctrine\Common\Persistence\ManagerRegistry;

class FeedbackHandler implements FeedbackHandlerInterface
{
    private $em;
    private $entityClass;
    private $repository;

    public function __construct(ManagerRegistry $mr, $entityClass)
    {
        $this->em = $mr->getManager();
        $this->entityClass = $entityClass;
        $this->repository = $this->em->getRepository($this->entityClass);
    }

    public function get($id)
    {
        return $this->repository->find($id);
    }

    public function all($limit = 50, $offset = 0)
    {

        $feedbacks = $this->em->createQuery("SELECT f FROM AcmeAcmeBundle:Feedback f")
            ->setFirstResult($offset)
            ->setMaxResults($limit)
            ->getResult();

        return array( "feedback" => $feedbacks );
    }

}

然而,当我向 scrutinizer-ci.com 提交代码时,它报告说

The method createQuery() does not seem to exist on object

与 PhpStorm 相同,它会在此行显示警告。有解决此问题的方法吗?

最佳答案

$em 变量添加一个 @var phpdoc 注释 ...

... 或(甚至更好)@returnManagerRegistrygetManager() 方法。

然后 PHPStorm/scrutinizer-ci 将知道 $em 是哪种类型,并且它有一个 createQuery() 方法。

这通常是一个很好的做法,也将在 PHPStorm 中启用自动完成。

示例:

/** @var \Doctrine\ORM\EntityManager */
private $em;

……或者……

class ManagerRegistry 
{

   /**
    * ...
    *
    * @return \Doctrine\ORM\EntityManager
    */ 
    public function getManager()
    { 
        // ...

关于php - ObjectManager 方法 createQuery() 似乎不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573969/

相关文章:

php - 如何仅在值为空时更新,否则在下一行中更新

php - MySQL:mysql_fetch_assoc():提供的参数不是有效的 MySQL 结果资源

php - Ubuntu 服务器和 PHP $_SERVER ['REMOTE_ADDR']

带路由的 Symfony2 访问控制

php - symfony smtp - 无法与主机建立连接

php - Symfony 的 DomCrawler 如何从 html 源中提取元描述

php - 使用 jquery 收集 trid

php - CodeIgniter - 共享模板变量

php - 选择元素到 foreach Twig 模板中

php - Symfony 2 配置页面没有样式