2013-11-12 3 views
0

Простой выбор этой формы:Выбор из возвращаемого массива Zend_Db_Table_Abstract?

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

Теперь, Существует столбец унаследуют в массиве, так что таблица имеет вид:

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

И При отображении я хотел бы, inherirs чтобы показать роль, на которую он наследует, а не идентификатор.

массив, возвращаемый Zend_Db_Table_Abstract чрезвычайно запутанным, поэтому я не могу просто сказать:

$array[0][inherits] 

ответ

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(); 

лучшим решением было бы написать left присоединиться к одной таблице и получить роль в наборе данных без кода 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); 
Смежные вопросы