在 Zend Framework 中使用 Zend_Db_Table 的 CakePHP 风格的数据库查询结果?
Posted
技术标签:
【中文标题】在 Zend Framework 中使用 Zend_Db_Table 的 CakePHP 风格的数据库查询结果?【英文标题】:CakePHP style database query results in Zend Framework using Zend_Db_Table? 【发布时间】:2012-02-06 04:34:08 【问题描述】:如果您有一个涉及许多连接的复杂 SQL 查询(例如返回带有关联多对多标签的文章),Zend 框架中是否有任何东西可以产生可爱的 Cakephp 风格的数据库结果:
Array
(
[0] => Array
(
[ModelName] => Array
(
[id] => 83
[field1] => value1
[field2] => value2
[field3] => value3
)
[AssociatedModelName] => Array
(
[id] => 1
[field1] => value1
[field2] => value2
[field3] => value3
)
)
)
我不介意它是一个对象而不是一个数组,我只是想知道通过使用 Zend_Db_Table 构建一个 SELECT JOIN 查询是否可以节省一些工作量并获得一些格式良好的结果。
这是我用来构建查询的代码:
$select = $db->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->from('tableName','fieldName')
->join('joinTable', 'joinTable.keyId = tableName.keyId',array())
->where('tableName.userId = ?', $userId);
$resultSet = $db->fetchAll($select);
【问题讨论】:
作为一个从 Cake 出身到不得不与 ZF 合作的人,我感受到了您的痛苦,并希望看到您得到的答案。 嗯,这当然不是没有选择的,我可以告诉你这么多。继承代码,多么有趣。让我们看看是否有任何反馈。这与我目前看到的差不多:mattmccormick.ca/2010/04/24/… 我认为按照我使用 Zend Framework 的速度,我将求助于使用基于 SQL 查询的解决方案,例如 mysql GROUP_CONCAT ***.com/questions/2358300/… 对于 LEFT JOINS 和 MySQL GROUP_CONCAT,还有一个基于 SQL 的解决方法(尽管从 ZF 的角度来看,它还不能回答这个问题):***.com/questions/4455958/… 【参考方案1】:没有什么比我所要求的数据更漂亮了。 正常的 Result 将是一个行集对象,但是 ->toArray() 可用于大多数 *Zend_DbTable_Abstract* 方法。
$result->toArray() 使用 Zend_debug::dump() 截断和转储:
Lead Tracks array(7)
[0] => array(9)
["trackid"] => string(2) "24"
["weekendid"] => string(1) "8"
["shiftid"] => string(1) "1"
["bidlocationid"] => string(1) "1"
["qty"] => string(1) "2"
["lead"] => string(1) "1"
["bidloc"] => string(14) "out of service"
["deptcode"] => string(3) "491"
["stationid"] => string(1) "1"
查询:
where = $this->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
->setIntegrityCheck(FALSE);
$where->where('track.bidlocationid = ?', $bidlocationId)
->where('lead = ?', $lead)
->join('bidlocation', 'bidlocation.bidlocationid = track.bidlocationid')
->where('bidlocation.stationid = ?', $stationId)
->order('shiftid ASC')
->order('weekendid ASC');
$result = $this->fetchAll($where);
对不起,只是实用程序:)
【讨论】:
以上是关于在 Zend Framework 中使用 Zend_Db_Table 的 CakePHP 风格的数据库查询结果?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Zend_Loader 选择不同版本的 Zend Framework 加载及其问题
如何使用Zend Framework 2使用Rest API
Zend Framework windows8.1下配置zend framework1.12