所以这是我的问题:
public function fetchAd($adID){
$row = $this->tableGateway->select(function(Select $select) use ($adID){
$select->join('adDetails','adDetails.adID = ads.adID',array('*'),'inner');
$select->where(array('ads.adID' => $adID));
});
return $row->current();
}
所以我正在做什么我正在查询ad
表并加入adDetails
表以便我获取某个AD的详细信息,问题是实体{{ 1}}属于我正在进行查询的模型,它没有来自AD
表的列名(变量);所以它只返回adDetails
表中的列,因为实体在AD
我试图扩展exchangeArray()
实体以使用AD
实体,但它现在返回到对象数组但是字段为null,因为它可以填充它们。
那么,我应该怎么做呢,为了让我在模型中为所有要加入的表提供所有列?
我也计划加入其他桌子。
答案 0 :(得分:2)
好的我解决了这个问题,问题是它将返回一个数组,并且它不会使用ORM样式,但是它完成了工作,因为现在ZF2中不支持ZF1中的关系;
use Zend\Db\Sql\Sql,
Zend\Db\Sql\Where;
$sql = new Sql($this->tableGateway->getAdapter());
$select = $sql->select();
$select->from($this->tableGateway->table)
->join('adDetails','adDetails.adID = ads.adID',array('*'),'inner');
$where = new Where();
$where->equalTo('ads.adID', $adID) ;
$select->where($where);
$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
return $result->current();
答案 1 :(得分:0)
public function fetchJoin()
{
$select = new \Zend\Db\Sql\Select;
$select->from('tablea a');
$select->columns(array('*'));
$select->join('tableb b', "b.id = a.b_id", array('field1'), 'left');
// to display query string remove comment in next line
//echo $select->getSqlString();
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}