5

私は次のコードを使用しています:

use Doctrine\ORM\Query\ResultSetMapping;
...
...
...
...
$em    = $this->get( 'doctrine.orm.entity_manager' );
$rsm   = new ResultSetMapping();
$query = $em->createNativeQuery( 'CALL procedureName(:param1, :param2)', $rsm )
            ->setParameters( array(
                'param1' => 'foo',
                'param2' => 'bar'
            ) );
$result = $query->getResult();
//$result = $query->execute(); // Also tried

$em->flush();
die(var_dump($result));

$resultパラメーターに何も表示されません。誰かがSymfony2.0.15のストアドプロシージャから結果を取得する方法を教えてもらえますか?

4

2 に答える 2

2

結果セットのマッピング情報を追加していません。サンプルについては、こちらをご覧ください。

于 2012-09-21T09:49:42.110 に答える
2

プレーンを使用することをお勧めしますPDO。次の例では、ストアド プロシージャを呼び出して、OUTパラメーターの値を取得します。

パラメータINを使用した手順:OUT

CREATE PROCEDURE `CLONE_MEMBER_PRODUCT` (IN ID INT, OUT NEW_ID INT)
BEGIN
    /* ... */
END;

getWrappedConnection()Doctrine\DBAL\Driver\Connectionの単なるラッパーであるインスタンスを返しますPDO

/* @var $connection \PDO */
$connection = $this->getEntityManager()
    ->getConnection()
    ->getWrappedConnection();

$stmt = $connection->prepare('CALL CLONE_MEMBER_PRODUCT(?, @NEW_ID)');
$stmt->bindParam(1, $id, \PDO::PARAM_INT);
$stmt->execute();

$stmt = $connection->query("SELECT @NEW_ID");
$id = $stmt->fetchColumn();
于 2014-01-31T02:46:00.287 に答える