这种形式的简单选择:
$select = $this->select();
return $rowset = $this->fetchAll($select);
现在,数组中有一个继承列,因此表的格式为:
id | role | inherits |
1 | admin | 2 |
2 | player | 3 |
当显示时,我希望继承列显示它实际上从中继承的角色而不是id。
Zend_Db_Table_Abstract返回的数组非常复杂,所以我不能只说:
$array[0][inherits]
答案 0 :(得分:1)
首先$ this-> fetchAll不会返回数组,它将返回Zend_Db_Table_Rowset_Abstract
个对象。您可以在Zend_Db_Table_Rowset Zend Docs中了解详情。
您可以将其作为对象获取数据
// use Zend_Db_Table_Row_Abstract object
$array[0]->inherits
或者如果你想获得一个数组,你可以这样做:
// get rowset and convert it to array
$rowset = $this->fetchAll($select);
$data = ($rowset) ? $rowset->toArray() : array();
更好的解决方案是在同一个表上编写左连接,并在没有任何PHP代码的情况下在数据集中获取角色。
$sql = $this->getAdapter()->select()
->from(array('r1' => 'your_roles_table'), '*')
->joinLeft(array('r2' => 'your_roles_table'), 'r2.id = r1.inherits', array(
'inherits_role' => 'r2.role',
));
$data = $this->getAdapter()->fetchAll($sql);
var_dump($data);