Zend_Db_Table - Ассоциативный массив вместо объекта - PullRequest
10 голосов
/ 25 августа 2009

Следующая строка:

$select = $table->select();
$select->where('approved = 1');
$result = $table->fetchRow($select);

Возвращает объект. Вместо этого я хотел бы получить ассоциативный массив.

Я знаю, что у Zend_Db есть метод fetchAssoc () для этого, но он похож на Zend_Db_Table (я пробовал fetchAssoc (), но он не работает, я ничего не нашел в документации)?

Ответы [ 3 ]

18 голосов
/ 25 августа 2009
$result = $table->fetchRow($select)->toArray();

Оба Zend_Db_Table_Row и Zend_Db_Table_Rowset имеют метод toArray(). Строка возвращается как ассоциативный массив, а строка возвращается как простой (порядковый) массив ассоциативных массивов.

2 голосов
/ 10 декабря 2009

Для дальнейшего ответа Билла, если вы хотите, чтобы Rowset возвращался в виде ассоциативного массива (а не порядкового номера), единственным вариантом представляется Zend_Db (как вы намекали):

$db     = $table->getAdapter();
$select = $table->select();
$select->where('approved = 1');
$result = $db->fetchAssoc($select);
1 голос
/ 04 февраля 2010
Zend_Loader::loadClass('Zend_Db_Table');
class SomeTable extends Zend_Db_Table_Abstract{

protected $_name = 'sometable';

public function getAssoc($where = null, $order = null, $count = null, $offset = null){
    if (!($where instanceof Zend_Db_Table_Select)) {
        $select = $this->select();

        if ($where !== null) {
            $this->_where($select, $where);
        }

        if ($order !== null) {
            $this->_order($select, $order);
        }

        if ($count !== null || $offset !== null) {
            $select->limit($count, $offset);
        }

    } else {
        $select = $where;
    }   
    return $this->getAdapter()->fetchAssoc($select);        
}
}

Тогда в вашем коде:

$this->some_table = new SomeTable();
//Get and print some row(s) 
$where = $this->some_table->getAdapter()->quoteInto('primarykey_name = ?', $primarykey_value);
print_r($this->somes_table->getAssoc($where));

//Get and print all rows 
print_r($this->areas_table->getAssoc());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...