如何使用doctrine1在zend1中调用存储过程

时间:2014-01-09 10:11:30

标签: zend-framework doctrine zend-db-table doctrine-odm doctrine-query

请帮帮我:

我想通过doctrine1

在zend1中调用mysql存储过程

我的存储过程是:

CREATE PROCEDURE sp_test()
BEGIN
  SELECT 'Number of records: ', count(*) from user;
END//

存储过程在phpMyAdmin中正常工作。

但如何通过zend1

在doctrine1中调用此存储过程

这是对学说的简单查询

$data = Doctrine_Query::create ()->select ( "u.id" )->from ( 'user u' )->fetchArray ();

但是我想在代码中调用sp_test()存储过程。

谢谢,

1 个答案:

答案 0 :(得分:0)

我认为您需要使用普通的pdo来调用存储过程。要做到这一点,你必须做这样的事情:

$dbh = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$stmt = $dbh->prepare('BEGIN sp_test(); END;')
$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

基本上我不确定你使用的是什么数据库引擎。在上面的例子中,它是一种调用存储过程的Oracle方式,但作为prepare参数的是纯sql,所以你几乎可以放任何东西。另请注意,上面的示例使用预准备语句 - 如果您不需要它,您可以使用以下代码($sql变量保存您的sql代码):

$conn = Doctrine_Manager::getInstance()->getCurrentConnection();
$conn->execute($sql);