- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想就 Zend Framework 2 中的 TableGateway 寻求一些帮助。基本上,我按照教程逐步进行了一些小的修改,但我不知道我错过了什么。
下面描述的问题与平台无关,我能够在 Windows 和 Linux 上重现它,但我现在只使用 Windows。
我在本地机器上的 MySQL 服务器中有这个表:
CREATE TABLE `admmenu` (
`menu_id` int(11) NOT NULL,
`menu_name` varchar(255) NOT NULL,
`menu_desc` varchar(255) DEFAULT NULL,
`menu_category_id` int(11) DEFAULT NULL,
`is_active` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `admmenu`
VALUES (1,'add_outing',NULL,1,1),
(2,'list_outings',NULL,1,1),
(3,'add_income',NULL,2,1),
(4,'list_incomes',NULL,2,1),
(5,'add_organization',NULL,3,1),
(6,'add_category',NULL,3,1),
(7,'add_customer',NULL,3,1);
我的 AdmMenuTable php 类中有这个:
namespace VSMoney\Model;
use Zend\Db\TableGateway\TableGateway;
class AdmMenuTable {
protected $tableGateway;
public function __construct(TableGateway $tableGateway) {
$this->tableGateway = $tableGateway;
}
public function fetchAll() {
$resultSet = $this->tableGateway->select();
return $resultSet;
}
}
在另一个类中,我调用 fetchAll() 方法来获取数据集并希望在 foreach 循环中对其进行操作。
我试图转储我得到的数据集,但它是空的。如果我运行可以在 mysql 控制台或 mysql workbench 的结果集对象中找到的 sql 查询,那么我得到了我想要的结果。
当我的代码运行时没有连接错误,mysql 日志文件不包含任何问题。
object(Zend\Db\ResultSet\ResultSet)[272]
protected 'allowedReturnTypes' =>
array (size=2)
0 => string 'arrayobject' (length=11)
1 => string 'array' (length=5)
protected 'arrayObjectPrototype' =>
object(VSMoney\Model\AdmMenu)[238]
public 'menu_id' => null
public 'menu_name' => null
public 'menu_desc' => null
public 'menu_category' => null
public 'is_active' => null
protected 'returnType' => string 'arrayobject' (length=11)
protected 'buffer' => null
protected 'count' => int 7
protected 'dataSource' =>
object(Zend\Db\Adapter\Driver\Pdo\Result)[271]
protected 'statementMode' => string 'forward' (length=7)
protected 'resource' =>
object(PDOStatement)[244]
public 'queryString' => string 'SELECT `admmenu`.* FROM `admmenu`' (length=33)
protected 'options' => null
protected 'currentComplete' => boolean false
protected 'currentData' => null
protected 'position' => int -1
protected 'generatedValue' => string '0' (length=1)
protected 'rowCount' => int 7
protected 'fieldCount' => int 5
protected 'position' => int 0
serviceConfig 看起来像这样:
'factories' => array(
'VSMoney\Model\AdmMenuTable' => function ($sm) {
$tableGateway = $sm->get('AdmMenuTableGateway');
$table = new AdmMenuTable($tableGateway);
return $table;
},
'AdmMenuTableGateway' => function ($sm) {
//$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$config = $sm->get('config');
$config = $config['db'];
$dbAdapter = new DbAdapter($config);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new AdmMenu());
return new TableGateway('admmenu', $dbAdapter, null, $resultSetPrototype);
},
AdmMenu 类:
<?php
namespace VSMoney\Model;
class AdmMenu{
public $menu_id;
public $menu_name;
public $menu_desc;
public $menu_category;
public $is_active;
public function exchangeArray($data) {
$this->menu_id = (isset($data['menu_id'])) ? $data['menu_id'] : null;
$this->menu_name = (isset($data['manu_name'])) ? $data['menu_name'] : null;
$this->menu_desc = (isset($data['menu_desc'])) ? $data['menu_desc'] : null;
$this->menu_category = (isset($data['menu_category'])) ? $data['menu_category'] : null;
$this->is_active = (isset($data['is_active'])) ? $data['is_active'] : null;
}
}
?>
最佳答案
根据评论,听起来您只是没有在结果集上循环。
$rs = $this->getServiceLocator()->get('VSMoney\Model\AdmMenuTable')->fetchAll();
foreach($rs as $r) {
//..do something on the result $r
}
您应该得到 7 个循环,因为您的查询似乎返回 7 个项目,并且对于每个循环 $r 将是 AdmMenu 的一个实例,其中包含该单独行的结果(由 exchangeArray
定义结果)。
关于php - Zend Framework 2 TableGateway fetchAll 方法返回空结果集但表包含数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402497/
我有一个关于 PDO 的问题。 有区别吗 $sql = "SELECT * FROM pages"; $pdo = $this->db->query($sql); $result = $pdo->fe
这个问题最好的标题是“如何将字典列表转换为元组列表”,除非我不能 100% 确定这是正确的。 我正在修改我在网上找到的一个抓取工具,它使用 .fetchall() 从数据库中获取数据。 cur.exe
我有以下代码: $sql = "SELECT table.field, table2.field2 FROM table, table2"; $stmt
我想知道是否有人可以帮助阐明为什么这段 PHP 代码没有进入 for 循环?在 MySQL 中,查询返回我需要的相应行,但在这个 PHP 文件中,它无法将任何内容返回到数组中,因此不执行 foreac
我不断收到错误“AttributeError:‘Cursor’对象没有属性‘fetchAll’”。我的 rowCount 是 451,所有查询都正常。 我已经研究过这个问题,大多数错误都涉及在 cur
我有一个数据库,我正在尝试查询该数据库以获取要显示给用户的信息。我用过 fetch(PDO::FETCH_ASSOC) 检索单行之前或 $row = mysql_fetch_array($result
我完全是 PHP 和 MySQL 领域的新手。我正在读 Kevin Yank 的书,在做他的一个例子时,我遇到了一个奇怪的结果。我确信我遵循并正确输入了他书中写的代码,但我想知道为什么我没有得到相同的
我正在使用 zend 框架开发一个网络应用程序,我希望我的用户能够使用 zend fetchAll 函数从其他用户那里进行搜索。但它返回完整的专栏,我只想要几个值。这是我的示例代码: $query=$
我在 PHP 中有一个函数,它使用 SELECT SQL 查询。我在这样的查询中使用占位符变量 (?)。 (此占位符用于 mysql 数据库中的表名): protected function _fet
所以,这个网站上有很多这个问题的实例。 但是它们中的大多数都混合了一堆其他的东西,比如类、大量的参数等等。 我有一些非常基本的代码,不,真的,可能是最基本的: try { $connectio
我正在使用 fluentpdo - https://github.com/lichtner/fluentpdo 我正在尝试使用此代码将表中的结果循环到 html $bxslider = $fpdo->
这个问题在这里已经有了答案: Call to a member function on a non-object [duplicate] (8 个答案) 关闭 9 年前。 我不知道为什么它会返回 C
我正在使用 Python 从数据库中选择数据。 cur.execute("Select a,b,c from tab1") print "a,b,c" print "\n" data = cur.fe
同一个查询语句: fetchAll(): 复制代码 代码如下: array(1) {  
我想用 limit 做一个 fetchAll() 吗?您知道 symfony2 的实体管理器是否可行吗? 我当前的代码(获取所有,无限制): $repository = $this->getDoctr
我有一个从两个内部连接表中选择的 sql 查询。 select 语句的执行大约需要 50 秒。但是, fetchall() 需要 788 秒,并且只获取 981 个结果。这是查询和 fetchall
我有一个 php 类,用于通过 PDO 运行 SQL 语句。该类将 FetchAll 的数据存储到公共(public)变量中的该查询中,但问题是我不知道查询是什么,所以我最终在数据操作查询(INSER
我通过 ssh 连接到远程服务器,并在那里创建了两个 python 文件作为测试:一个用于创建数据库,另一个用于从中读取数据。 创建数据库的脚本 import os import sqlite3 #
我有这段有效的代码。数据库连接在文件的前面定义,与此处显示无关。安全地假设它工作正常 - 因为它是。 :-) try { $stmt = $conn->prepare("SELECT * FR
当我尝试执行以下代码时,我一直收到一个空数组: $this->DB->prepare('SELECT * FROM Articles WHERE Author = :username AND Time
我是一名优秀的程序员,十分优秀!