0

这种形式的简单选择:

            $select = $this->select();
            return $rowset = $this->fetchAll($select);

现在,数组中有一个继承列,所以表的形式是:

   id   |   role   |   inherits   |
   1    |   admin  |    2         |
   2    |   player |    3         |

并且当显示时,我希望 inherirs 列显示它实际继承的角色而不是 id。

Zend_Db_Table_Abstract 返回的数组非常复杂,所以我不能只说:

$array[0][inherits]
4

1 回答 1

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);
于 2013-11-12T17:13:52.463 回答