【问题标题】:Symfony Doctrine DQL cannot find createQuery in entity managerSymfony Doctrine DQL 在实体管理器中找不到 createQuery
【发布时间】:2018-04-25 04:00:35
【问题描述】:

我用 Symfony 学习 Web 开发已经有一段时间了。 我正在关注 Symfony 的 websiteDoctrine tutorial 上的教程,并尝试使用 Doctrine ORM 中的实体管理器来创建查询,但 PhpStorm 的自动完成告诉我它找不到 createquery()。 (截图见下)

【问题讨论】:

  • 如果您学习 Symfony 的良好实践,您必须在创建查询之前获取存储库
  • 您不需要先获取 repo。这很常见,但不是必需的。无论如何,回购只是将调用传递给实体管理器。

标签: php symfony phpstorm doctrine-query


【解决方案1】:

根据您的屏幕截图 (getRepository, flush, persist...)$this->getDoctrine()->getManager() 的方法,您可以在任何 symfony controller 类中找到:

您要使用的是 $this->getEntityManager()->createQuery(),您可以在 symfony repository 类中找到它:

所以这样做的正确方法是创建一个存储库并将您的方法添加到其中,然后在您的控制器中使用此方法:

class UserController extends Controller
{

  /**
   * @Route("/", name="user_list")
   */
  public function indexAction()
  {
      $em = $this->getDoctrine()->getManager();
      $userrs = $em->getRepository("AppBundle:User")->myRepositoryMethod();
      ...

【讨论】:

  • 哦,干杯,这正在工作。所以这意味着我只在 repository 中定义查询,对吗?
  • 是的,自定义查询更好的地方是存储库。
【解决方案2】:

你确定你已经包含了以下使用声明

use Doctrine\ORM\EntityManager

【讨论】:

  • 请将 'use Doctrine\Common\Persistence\ObjectManager' 替换为 'use Doctrine\ORM\EntityManager',然后你就能找到方法 createQuery()
猜你喜欢
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2011-08-22
  • 1970-01-01
  • 2018-09-15
相关资源
最近更新 更多