我有一个带有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;
}
}
答案 0 :(得分: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 :(得分: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;
例15.55。指定包含表达式的列的示例
带括号的表达式隐式变为Zend_Db_Expr。