gpt4 book ai didi

php - Zend Framework 2 Db\Adapter\Adapter 查询结果集像 ZF1

转载 作者:可可西里 更新时间:2023-10-31 23:06:17 28 4
gpt4 key购买 nike

只需要帮助理解 ZF2 中的一些简单数据库查询。在 ZF1 中,我有这样简单的方法:

public function recordset()
{
// listing of all records
$db = Zend_Registry::get('db');
$sql = "SELECT " . $this->_selectlist() .
" from customer c";
$r = $db->fetchAll($sql);
return $r;
}

在 ZF2 中,我该怎么做?我已经尝试了以下方法,但这只是返回了一个看起来像“结果”对象的东西,但我想要的只是一个像 ZF1 对 fetchAll 所做的那样的数组。如果我必须迭代结果对象只是为了稍后提供数组,然后必须再次迭代,这似乎是一些重复工作。

无论如何,这是我目前在 ZF2 中拥有的内容:

//above the controller start I have: use Zend\Db\Adapter\Adapter as DbAdapter;

public function blaAction()
{
$db = new DbAdapter(
array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=mydb;host=localhost',
'username' => 'root',
'password' => '',
)
);
$sql = 'select * from customer';
$stmt = $db->query($sql);
$results = $stmt->execute();
$this->view->data = $results;
return $this->view;
}

在输出中,我得到了这个:

object(Zend\Db\Adapter\Driver\Pdo\Result)#197 (8) { 
["statementMode":protected]=> string(7) "forward" ["resource":protected]=> object(PDOStatement)#195 (1) {
["queryString"]=> string(22) "select * from customer"
} ["options":protected]=> NULL ["currentComplete":protected]=> bool(false) ["currentData":protected]=> NULL ["position":protected]=> int(-1) ["generatedValue":protected]=> string(1) "0" ["rowCount":protected]=> NULL
}

但是,如果我将 $results 更改为 $results->count();,我确实会看到记录数。我如何以数组形式获取数据? (一个完整的记录集)

有一次我确实看到了类似这样的东西:$results->current()但这只返回了一条记录。

只是一个旁注。我确实看到了我可以使用的所有表抽象类,但在我学习的这一点上,我不想那样做。我只想要一些像在 ZF1 中那样返回数组的简单按需查询。在 ZF2 中,配置中似乎有太多“连接”的东西,而且看起来有点矫枉过正。但是,作为一个框架,我喜欢它的灵 active ,我在 ZF1 中开发的主要应用程序真的可以从 ZF2 的模块化中受益。 (否则我可能会使用其他框架)

请原谅我的无知,非常感谢您的帮助!

最佳答案

来自 http://framework.zend.com/manual/2.0/en/modules/zend.db.result-set.html :

Zend\Db\ResultSet is a sub-component of Zend\Db for abstracting the iteration of rowset producing queries.

因此您可以执行以下操作:

$statement = $db -> query($sql);

/** @var $results Zend\Db\ResultSet\ResultSet */
$results = $statement -> execute();

$returnArray = array();
// iterate through the rows
foreach ($results as $result) {
$returnArray[] = $result;
}

现在您可以将它发送到 View :

return new ViewModel(array('results' => $returnArray));

关于php - Zend Framework 2 Db\Adapter\Adapter 查询结果集像 ZF1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107346/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com