Zend_Db_Table - Yerine Nesne ilişkisel dizi

3 Cevap php

Aşağıdaki satır:

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

Bir nesne döndürür. Ne istiyorum yerine bir ilişkisel dizi elde etmektir.

Ben Zend_Db Bunun için fetchAssoc () yöntemi vardır ancak benzer bir şey Zend_Db_Table de olduğunu biliyorum (I (fetchAssoc denedim) ama o çalışmıyor, ben belgelerinde şey bulamadı)?

3 Cevap

$result = $table->fetchRow($select)->toArray();

Her iki Zend_Db_Table_Row ve Zend_Db_Table_Rowset, bir toArray() yöntemi vardır. Bir Satır bir ilişkisel dizi olarak döndürülür ve bir satır kümesi ilişkisel diziler basit (sıralı) dizi olarak döndürülür.

İsterseniz Bill'in cevabı ilerletmek için, satır kümesi tek seçenek Zend_Db (siz değindiğim gibi) olduğu görülmektedir (yerine sıralı daha) bir ilişkisel dizi olarak geri döndü:

$db     = $table->getAdapter();
$select = $table->select();
$select->where('approved = 1');
$result = $db->fetchAssoc($select);
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);        
}
}

Sonra kodu:

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