Php Zend Framework 2如何使用join从多个表中获取列?

Php Zend Framework 2如何使用join从多个表中获取列?,php,mysql,sql,zend-framework,Php,Mysql,Sql,Zend Framework,我正在使用ZfcBase\Mapper\AbstractDbMapper为我的项目编写mysql查询。对于单表查询,一切都很好。如果我加入一些表,结果会很好,但唯一的问题是我不知道如何从“加入”的表中选择列。以下是我的示例代码: class XYZ extends AbstractDbMapper implements XYZInterface { public function joinTables() { $select = $this->getSe

我正在使用ZfcBase\Mapper\AbstractDbMapper为我的项目编写mysql查询。对于单表查询,一切都很好。如果我加入一些表,结果会很好,但唯一的问题是我不知道如何从“加入”的表中选择列。以下是我的示例代码:

class XYZ extends AbstractDbMapper implements XYZInterface

    {
    public function joinTables() {
         $select = $this->getSelect();
         $select->reset('columns');
         $select->columns(array('colA','colB'))
                   ->join('ABC','ABC.colA=XYZ.colA',array('colB','colC'))
                   ->where(array('XYZ.colA' => 'value1'));
         $resultSet = $this->select($select);
         $myResults= array();
         foreach ($resultSet as $myResult) {
                $myResults[] = $myResult;
         }
         return $myResults;
    }

}

结果$myResults实际上是一个XYZ实体数组。如何将ABC实体部分包含在结果集$myResults中

添加
->setIntegrityCheck(false)

我已更新了您的代码:

public function joinTables() {
     $select = $this->getSelect();
     $select->setIntegrityCheck(false);
     $select->reset('columns');
     $select->columns(array('colA','colB'))
               ->join('ABC','ABC.colA=XYZ.colA',array('colB','colC'))
               ->where(array('XYZ.colA' => 'value1'));
     $resultSet = $this->select($select);
     $myResults= array();
     foreach ($resultSet as $myResult) {
            $myResults[] = $myResult;
     }
     return $myResults;
}
考虑到上述示例,请参见。您的代码应该如下所示

 $select = $this->getSelect();
 $select->from('ABC')->join('XYZ','ABC.colA=XYZ.colA' array('colA','colB'))
                   ->where('XYZ.colA = value1');
         $resultSet = $this->select($select);
         $myResults= array();

适当修改columns方法是否仅适用于ZF 1.x?我使用的是最新版本,在供应商的任何地方都找不到此函数setIntegrityCheck。是的,您只能在zf 1.x中使用它,您没有指定您没有使用zf 2So。您知道ZF2的解决方案应该是什么吗?
 $select = $this->getSelect();
 $select->from('ABC')->join('XYZ','ABC.colA=XYZ.colA' array('colA','colB'))
                   ->where('XYZ.colA = value1');
         $resultSet = $this->select($select);
         $myResults= array();