替代 fetchAllAssociative()` 并在学说中执行

问题描述 投票:0回答:1

我正在通过学说使用本机 sql 调用存储过程。

fetchAllAssociative()
execute
已弃用。有哪些替代方案?

    $sql = 'CALL spWithParams(:param)';
    $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
    $stmt->execute([":param"=>"test"]);
    print_r($stmt->fetchAllAssociative());

我不打算使用

ResultSetMapping()
将响应映射到实体,如here所述,因为我将在其上添加自定义包装器。

php zend-framework doctrine
1个回答
3
投票

执行此操作的正确方法是使用 ResultSetMapping 和 标量结果 来选择任意字段。然后,您可以使用

getArrayResult()
执行查询,以实现与提供的代码中相同的行为。

举个例子:

$rsm = new ResultSetMapping();
$rsm->addScalarResult('my_database_column', 'myField');
$query = $this->getEntityManager()->createNativeQuery(
    'CALL spWithParams(:param)',
    $rsm
);
$query->setParameters([":param"=>"test"]);

$results = $query->getArrayResult();
/* 
[
  ['myField' => 'foo'],
  ['myField' => 'bar']
]
*/
© www.soinside.com 2019 - 2024. All rights reserved.