Php 无法使用表网关使用join zend framework 2获取记录
这是我的函数,当我调用它时,出现以下错误: 由于此对象是使用构造函数中的表和/或架构创建的,因此它是只读的Php 无法使用表网关使用join zend framework 2获取记录,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,这是我的函数,当我调用它时,出现以下错误: 由于此对象是使用构造函数中的表和/或架构创建的,因此它是只读的 public function getImpressionLeft($AvailableCampaigns){ $result = $this->tableGateway->select(function(Select $select) use ($AvailableCampaigns){ $select->from(array('a'=>'
public function getImpressionLeft($AvailableCampaigns){
$result = $this->tableGateway->select(function(Select $select) use ($AvailableCampaigns){
$select->from(array('a'=>'CampaignSettings'));
$select->columns(array(
'a.CampaignID',
'MaxImpression'=>new \Zend\Db\Sql\Expression('a.MaxImpression - b.TotalImpression'),
'MaxClick'=> new \Zend\Db\Sql\Expression('a.MaxClick - b.TotalClicks'),
))->join(array('b'=>'ImpressionCount'),'a.CampaignID = b.CampaignID',Select::JOIN_LEFT)
->where(new \Zend\Db\Sql\Predicate\In('a.CampaignID',$AvailableCampaigns));
});
return $result->getDataSource();
}
您关闭闭包太快了,我很惊讶您没有得到解析错误。你可能永远不会死
public function getImpressionLeft($AvailableCampaigns){
$result = $this->tableGateway->select(function(Select $select) use ($AvailableCampaigns){
$select->from(array('a'=>'CampaignSettings'));
$select->columns(array(
'a.CampaignID',
'MaxImpression'=>new \Zend\Db\Sql\Expression('a.MaxImpression - b.TotalImpression'),
'MaxClick'=> new \Zend\Db\Sql\Expression('a.MaxClick - b.TotalClicks'),
))->join(array('b'=>'ImpressionCount','a.CampaignID = b.CampaignID',Select::JOIN_LEFT))
->where(new \Zend\Db\Sql\Predicate\In('a.CampaignID',$AvailableCampaigns));
});
return $result->getDataSource();
}
另一点是$result是一个ResultSet对象,因此您可以在foreach中迭代它来读取每一行,您可以尝试返回
$result
,而不是$result->getDataSource()代码>谢谢你的回复,很抱歉我发错了代码。我编辑过it@SadiqGaur我也刚刚编辑了我的,因为TableGateway::select()的结果是一个resultset,没有得到任何东西没有resultset,只有errro出现“因为这个对象是用构造函数中的表和/或架构创建的,它是只读的”。实际上,还有一篇文章可能会对您有所帮助。基本网关似乎绑定到一个表,本文将向您展示一个示例,以从AbstractTableGateway中示例一个新网关