在\ Doctrine \ Common \ Persistence中找不到methode getconnection

时间:2019-05-16 22:57:52

标签: symfony doctrine symfony4

我正在关注Symfony 4的辅导课,我们想在该辅导课上创建原始查询。这是教程中提供的代码:

public function index(Request $request)
{
    $entityManager = $this->getDoctrine()->getManager();

    $conn = $entityManager->getConnection();
    $sql = '
    SELECT * FROM user u
    WHERE u.id > :id
    ';
    $stmt = $conn->prepare($sql);
    $stmt->execute(['id' => 3]);

   //more code 
    }

但是当我尝试执行相同的操作时,我的IDE似乎无法识别方法getconnection,它给了我以下消息:

  

在\ Doctrine \ Common \ Persistence \ ObjectManager中找不到方法getconnection

关于应该怎么做的任何想法?我会很感激的。

1 个答案:

答案 0 :(得分:0)

由于这不是真正的错误,而是更多的静态分析结果,因此您可以尝试使所使用的静态分析工具安静(不确定,这是哪个),您可以在获取实体管理器时执行此操作:

/** @var \Doctrine\ORM\EntityManagerInterface $entityManager */
$entityManager = $this->getDoctrine()->getManager();

如果静态分析工具有用,它将接受评论/提示并识别实体管理器的真实含义,并且可能会停止抱怨。

(我问自己的问题:是否有理由使用普通SQL而不是...您知道...实体管理器,例如... $user = $entityManager->find(User::class, 3); ...除非您的User不是实体,无论出于何种原因)