php - Zendframework Rowset 按键选择

标签 php database zend-framework zend-db

我正在尝试通过行的主键访问 fetchAll 调用(返回 Zend_Db_Table_Rowset_Abstract)的行。

我想知道除了遍历并找到所需的行之外,最简单的方法是什么。

最佳答案

如果我没记错的话,Zend_Db_Table_Rowset_Abstract 只是传递了一个数组(或类似数组的东西),然后当您遍历它时,它会创建 Zend_Db_Table_Row_Abstract 对象。

最好的方法可能是遍历一次,并将行存储在一个数组中,由主键索引。这样你做一个循环,然后可以通过键访问任何行。

更新:刚刚查看了源代码,这里是(最终)传递给行集对象的数据:

$stmt = $this->_db->query($select);
$data = $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
return $data;

当您第一次遍历行集时,原始数组用于创建行对象。数据在此之前尚未循环,因此您没有在做已经完成的事情。

所以你必须做这样的事情来将行映射到主键(我有一段时间没有使用 Zend_Db_*,把它当作伪代码):

$rows = array();
foreach($rowset as $row){
  //you could pull the primary key from Zend_Db_Table
  $rows[$row->id] = $row;
}

//now you can lookup by primary key
$rows[55]->name;

当然,如果需要,您可以扩展抽象行集类并在内部执行此操作。

关于php - Zendframework Rowset 按键选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782238/

相关文章:

php - 生成具有限制数字的随机值

mysql - 如何使用 PostgreSQL 完成 "MySQL cross database reference"

php - 如何更改来自 Zend_Gdata_Youtube 的请求 URL 以在 API v3 上实际工作?

php - 无法从数据库在 joomla 中创建 super 用户

php - password_hash 仍然散列并存储一个 undefined variable

javascript - 禁用提交按钮,同时仍允许 PHP 脚本在提交表单时运行

php - Mysql选择按日期字段的一部分分组

database - 无法启动 clickhouse 服务,../data/default/<TableName> 中的文件太多

zend-framework - 如何在 Zend Framework 中使用 headScript 添加脚本文件?

MySQL:如何在一个查询中获取所有字段的 SUM()?