24

Doctrine を使用して Symfony2 でカスタム SQL クエリを作成するにはどうすればよいですか? またはDoctrineがなくても、私は気にしません。

次のようには機能しません。

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

ありがとう。

4

2 に答える 2

83

Entity Manager から 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 に答える