2011-08-22 50 views
2

Zend的分貝表適配器提供fetchPairs函數返回對陣列(ID => idvalue,...)的,zendframework fetchPairs在教義同等功能

$db = Zend_Db_Table::getDefaultAdapter(); 
$select = $db->select()->from('users', array('id', 'username')); 
$roleOptions = $db->fetchPairs($select); 

可以在Zend的形式元素被加載

$this->addElement('select', 'user', array(
      'label'  => 'Select user:', 
      'required' => true, 
      'multiOptions' => $roleOptions 
     )); 

Doctrine中有哪些等效函數?

我知道我們可以通過記錄循環爲此設置:)

但我想這樣做在使用理論正確的方式。

回答

0

正確的方法是遍歷對象。

$q = $em->createQuery("select u from MyApp\Domain\User u"); 
foreach ($q->getResult() as $user){ 
    //process it here 
} 

的不那麼正確的做法:partial objects

$q = $em->createQuery("select partial u.{id,name} from MyApp\Domain\User u"); 
foreach ($q->getResult() as $user){ 
    //process it here the same way as above 
} 
0

在庫中的類,方法的身體

$qb = $this->_em->createQueryBuilder(); 

$qb->select('t.id, t.param1, t.param2') 
     ->from($this->_entityName, 't INDEX BY t.id'); 

$res = $qb->getQuery()->getResult(); 

而且$結果將包含

array(
    1 => array(
     id = 1, 
     param1= val2, 
     param2=val2 
    ), 
    ..., 
    234 => array(
     id = 234, 
     param1= val234, 
     param2=val234 
    ) 
); 

看也using-index-by

1

您可以使用\PDO::FETCH_KEY_PAIR模式與原理here解釋。

實施例:

$statement = $connection->query('SELECT id, username FROM users'); $pairs = $statement->fetchAll(\PDO::FETCH_KEY_PAIR);