Нужна помощь с Zend_Db_Select - PullRequest
2 голосов
/ 15 марта 2011

Я сейчас работаю с Zend Framework.

просто интересно, есть ли простой способ сделать мои результаты в формате числового массива, а не в ассоциативном массиве?

Например, вот мое утверждение zend_db_select

   $select = $this->select()->from('providerReligionPreference','religionTypeId')
           ->where('providerId = ?',$providerId)
           ->where('quoteTypeId = ?',$quoteTypeId);

   $result = $this->fetchAll($select);

   var_dump($result->toArray());

        return $result->toArray();

Когда я var_dump $ result-> toArray () я получаю

array(2) { [0]=> array(1) { ["religionTypeId"]=> string(1) "1" } [1]=> array(1) { ["religionTypeId"]=> string(1) "2" } } 

Но я хотел быть в формате числового массива, как

$result[0]="1";
$result[1]="2";

Можеткто-нибудь поможет мне?Большое вам спасибо

Приветствия

Ответы [ 4 ]

1 голос
/ 15 марта 2011

Возвращение fetchAll - это набор строк, как описано в: http://framework.zend.com/manual/fr/zend.db.table.rowset.html

В наборе строк реализованы "SeekableIterator" и "Countable": http://framework.zend.com/apidoc/core/Zend_Db/Table/Zend_Db_Table_Rowset_Abstract.html

Использование:

$myAssocArray = array();
foreach ($result as $row) {
    $myAssocArray[] = $row->religionTypeId;
}
1 голос
/ 15 марта 2011
$adapter->setFetchMode(Zend_Db::FETCH_NUM);
$result = $this->fetchAll($select);

или

$result = $adapter->fetchAll($select, array(), Zend_Db::FETCH_NUM);

при условии, что $this является экземпляром Zend_Db_Table (никто не будет расширять адаптер как модель, верно?):

$result = $this->getAdapter()->fetchAll($select, array(), Zend_Db::FETCH_NUM);
1 голос
/ 15 марта 2011
$adapter->setFetchMode(Zend_Db::FETCH_NUM);
$select = $adapter->select();
...

или даже оба

$adapter->setFetchMode(Zend_Db::FETCH_BOTH);
1 голос
/ 15 марта 2011

Ваш $result является набором строк, поэтому вы можете сделать что-то вроде этого:

$numericResult = array();
foreach ($result as $row) {
     $numericResult []=  $row->religionTypeId;
}
...