需要获取表,以便每行都有密钥的主ID(ZEND)

时间:2014-03-06 11:51:11

标签: php mysql sql zend-framework

需要按顺序从数据库中获取所以我可以获得密钥作为feched表的主键(或者我指出的select中的任何列)。 实施例

select id, name from account;
array(
  0 => array(id => 12345, name => Some Dude),
  1 => array(id => 12356, name => Other Dude)
)

我需要的是

array(
  12345 => array(id => 12345, name => Some Dude),
  12356 => array(id => 12356, name => Other Dude)
)

谢谢!

3 个答案:

答案 0 :(得分:0)

这将从您的表中获取所有数据,包括ID

$dbtbl = new Application_Model_DbTable_table(); //your table name
$var = $dbtbl->fetchAll($dbtbl->select());

答案 1 :(得分:0)

假设您使用的是Zend Dbtable。您只需要从表中获取数据即可 循环通过它。

在你的控制器中。

$myTable = new new Application_Model_DbTable_Account();    
$this->view->accounts = $myTable->fetchAll();

and in your html view 

just display it like this.

    <table>
    <tr>
        <th>Id Nr.</th>
        <th>Name</th>       
    </tr>

<?php  foreach($this->accounts as $acc) : ?>

    <tr>
        <td><?php echo $this->escape($acc->id);?></td>
        <td><?php echo $this->escape($acc->name);?></td>             
    >/tr>

    <?php endforeach; ?>

</table

答案 2 :(得分:0)

如果您没有绑定Zend_Db_Table,那么您可以使用更直接的方法并获得对查询的更多控制。

$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()->from('users',array('id', 'login'));  //SELECT id, login FROM users
$result = $db->fetchAssoc($select); //this is where magic happens

如果只能获得数组,那么可以使用此函数对其进行转换:

/**
 * Transforms associative array to 'id'=>$column (or 'id'=>array(columns))
 * @param array $array - associative array
 * @param string|array $value - which column use as value (or array of columns)
 * @param string  - OPTIONAL which column use as key
 * @return type array - 
 */
function transformTable($array, $col, $key = 'id') {
    $tmp = array();

    if (is_array($col)) {
        foreach ($array as $item) {
            foreach ($col as $value) {
                $tmp[$item[$key]][$value] = $item[$value];
            }
        }
    } else {
        foreach ($array as $item) {
            $tmp[$item[$key]] = $item[$col];
        }
    }

    return $tmp;
}