3

データベースから値を入力する必要がある select 要素を含むフォームがあります。具体的には、現在のユーザーの名前と ID。このfetchPairs()関数はこれに最適です。ただし、first_name列と列の値を連結し、last_nameこれをオプション ラベルとして表示する必要があります。それを行い、まだ使用する方法はありますfetchPairs()か? そうでない場合、どうすれば同じ結果を得ることができますか? 以下は、現在動作しているコードの抜粋です。

<?php // excerpt

class Default_Form_AddUser extends Zend_Form
{
    public function init()
    {
        $this->addElement('select', 'user', array(
            'label'      => 'Select user:',
            'required'   => true,
            'multiOptions' => $this->_getSelectOptions()
        ));
    }

    protected function _getSelectOptions()
    {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()->from('users', array('id', 'first_name'));
        $roleOptions = $db->fetchPairs($select);
        return $roleOptions;
    }
}
4

2 に答える 2

11
protected function _getSelectOptions()
{
    $db     = Zend_Db_Table::getDefaultAdapter();
    $select = $db->select()->from('users', array(
        'id',
        'name' => new Zend_Db_Expr("CONCAT(first_name, ' ', lastname)"),
    ));

    return $db->fetchPairs($select);
}
于 2009-11-25T20:08:27.113 に答える
3

これは単なるアイデアであり、完全にテストされていませんが、Zend_Db_Expr を使用してみることができます。

$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()->from(
   'users', 
    array('id', "CONCAT_WS(' ', first_name, last_name")
);
$roleOptions = $db->fetchPairs($select);
return $roleOptions;

Zend_Dbのドキュメントから:

例 15.55。式を含む列の指定例

括弧付きの式は暗黙的に Zend_Db_Expr になります。

于 2009-11-25T20:09:48.907 に答える