24

如何使用 Doctrine 在 Symfony2 中创建自定义 SQL 查询?或者没有教义,我不在乎。

不像这样工作:

    $em = $this->getDoctrine()->getEntityManager();
    $em->createQuery($sql);
    $em->execute();

谢谢。

4

2 回答 2

83

您可以直接从实体管理器获取 Connection 对象,并通过它直接运行 SQL 查询:

$em = $this->getDoctrine()->getManager(); // ...or getEntityManager() prior to Symfony 2.1
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT something FROM somethingelse WHERE id = :id");
$statement->bindValue('id', 123);
$statement->execute();
$results = $statement->fetchAll();

但是,除非真的有必要,否则我建议不要这样做...... Doctrine 的 DQL 几乎可以处理您可能需要的任何查询。

官方文档:https ://www.doctrine-project.org/projects/doctrine-dbal/en/2.9/reference/data-retrieval-and-manipulation.html

于 2012-10-12T15:37:33.947 回答
-2

您可以执行此代码,它可以工作:

$em = $this->getDoctrine()->getEntityManager();
$result= $em->createQuery($sql)->getResult();
于 2013-11-17T22:02:53.770 回答