2009-11-25 5 views
3

데이터베이스의 값을 채워야하는 select 요소가있는 양식이 있습니다. 특히, 현재 사용자의 이름과 ID. fetchPairs() 함수는이 기능을 잘 수행합니다! 그러나 first_name 열과 last_name 열의 값을 연결하여 옵션 레이블로 표시해야합니다. 그것을 할 수있는 방법이 여전히 fetchPairs()을 사용하고 있습니까? 그렇지 않은 경우 어떻게 동일한 결과를 얻을 수 있습니까? 다음은 현재 작동되는 코드의 발췌 한 것입니다 :Zend Framework : 두 개의 열을 연결하고 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; 
    } 
} 

답변

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); 
} 
+1

작동합니다! 감사! – Andrew

3

이는 아이디어, 완전히 테스트되지 않은 것입니다,하지만 당신은 Zend_Db_Expr 사용을 시도 할 수 있습니다 다음 Zend_Db documentation에서

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

을 :

예 15.55. 표현식이 포함 된 열 지정의 예

괄호가있는 표현식은 암시 적으로 Zend_Db_Expr이됩니다.