如何从Symfony获取存储过程的结果

时间:2014-07-01 23:23:42

标签: symfony stored-procedures sql-server-2012

我正在尝试从Symfony,

在SQL Server 2012上执行此存储过程
CREATE PROCEDURE sp_cumplerequisito @param integer
AS
IF (select count(*) from [dbo].[cumplerequisito]
where estado=1 and inscripcion_id=@param) = (select count(*) from [dbo].[requisito]
where estado=1)
    RETURN 1
ELSE
    RETURN 0;
GO

我需要存储过程的返回值,所以我从Symfony尝试了这个:

 $rsm = new ResultSetMapping();

    $query = $em->createNativeQuery('EXEC sp_cumplerequisito 1', $rsm);
    $query->setParameter('param', 1);
    $result = $query->getResult();

然后我尝试使用此代码以使用$ result值

if ($result ==1){          
         $mensaje = 'Estudiante  ha cumplido todos los requisitos';
          return $this->render('academicoBundle:Default:estudiantematriculado.html.twig', array('mensaje' => $mensaje));
              }else{
         $mensaje2 = 'Estudiante no ha cumplido todos los requisitos';
         return $this->render('academicoBundle:Default:estudiantematriculado.html.twig', array('mensaje' => $mensaje2));}

但是我有这个回复" SQLSTATE [IMSSP]:查询的活动结果不包含任何字段。 "

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

说实话你在你的数据库中做过程。构建Doctrine ORM是为了省略这些事情并将事物从DB移到PHP。因此,例如,如果你想在更新/插入后增加字段你必须使用doctrine lifecycle callbacks,那么你应该将这个程序移到你的repository class