从zf2中的表访问控制器中的id

时间:2016-11-02 16:04:26

标签: zend-framework2

使用Zf2我想通过编写以下内容从控制器中的表中访问id:

$pname => $this->getProvincesTable()->fetch_province($pid);

但它给了我Zend \ Db \ ResultSet \ ResultSet的对象,当我运行foreachloop时

foreach($pname as $p)
{  
echo $this->escapeHtml($p->id); 
} 

在视图中: 它给了我id,但我想访问控制器中的id。

那我怎么能这样做呢?

1 个答案:

答案 0 :(得分:1)

我在猜你是否正在使用TableGateway来获取fetch_province?

如果您返回ResultSet(即项目集合),您可以获得如下所示的单行/条目:

$rowset => $this->getProvincesTable()->fetch_province($pid);
$myItem = $rowset->current();
$myItem->id; // do something with it here..

这将为您提供一个数组/ ArrayObject,然后您可以访问该数组/ ArrayObject以获取您的ID。

您可以在TableGateway方法中执行此操作,因此如果您确实尝试获取单个条目,或者您有时期望多个项目可以迭代它们或使用current()方法,那么每次只返回一个条目上方。

如果您发布更多代码(特别是fetch_province),我可以提出更好的建议。

例如;

如果您总是希望使用主键从此方法返回1个项目,则可以在fetch_province中执行以下操作:

$results = $table->select(array('id' => $id));

if(count($results) != 1) {
    // something went wrong, 
    // throw exception here or what ever
}

$row = $results->current();

return $row; // now u always get back your single item