我有这样的类,它可以工作并从数据库返回反馈
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 注释 ...
... 或(甚至更好)@return
到 ManagerRegistry
的 getManager()
方法。
然后 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/