目前,我正在处理一些与模型相关的改进,并研究了我写过的具体问题。
$queryGetPages = $this->fetchAll($this->select()
->where('page_active = ?', (int) $active)
->order('page_rank ASC'));
if($queryGetPages) {
$queryGetPages = $queryGetPages->toArray();
foreach($queryGetPages as $key => $value) {
$queryGetPagePrint = $this->find($value['pageid'])
->current()
->findModule_Model_ModulePagesPrintsViaModule_Model_ModulePagesFuses(
$this->select()
->from('module_pages_prints', array('print_title'))
->where('fuse_locale = ?', $this->_toolbox['editor']['translation']) )
}
}
问题在于从相关表请求数据的魔术方法。我只需要'标题'每行一个单元格,但由于某种原因它不会让我。即使使用此查询,它也会返回该行中的所有单元格。我做错了什么,但不知道是什么!
如果有人能指出我正确的方向,我会非常感激。
祝你好运!
答案 0 :(得分:1)
在你的情况下隐式调用的函数是findManyToManyRowset()
(Zend / Db / Table / Row / Abstract.php中可用的代码,行1001-1108(从ZF 1.12.1开始)。看看在第1070-1072行:
$select->from(array('i' => $interName), array(), $interSchema)
->joinInner(array('m' => $matchName), $joinCond, Zend_Db_Select::SQL_WILDCARD, $matchSchema)
->setIntegrityCheck(false);
简而言之:调用的函数将覆盖您的from()
调用,并从依赖表(module_pages_fuses
)中选择所有行。这是它的工作方式。
相反,我建议您编写实际上需要“哑”方式的查询,例如
$queryGetPagePrint = $this->select()
->from(array('p' => 'module_pages_prints'), array('print_title'))
->join(array('f' => 'module_pages_fuses'),'p.pageid = f.pageid',array())
->where('f.fuse_locale = ?', $this->_toolbox['editor']['translation'])
->where('p.pageid = ?', $value['pageid']);