我想制作一个可以显示2个coloumns的连续的下拉列表
这是我的代码:
$list = CHtml::listData(Coa::model()->findAllBySql("SELECT id, concat(name,' - ',saldo) as info FROM coa where id_type = 1"),'id','info');
echo CHtml::dropDownList('id_coa','id', $list, array('prompt'=>'choose account','class'=>'form-control'));
该表格由 id,id_type,name和saldo 组成。
我想连接名字和saldo, 然后将其放入下拉选项
我已经尝试了findAllBySql中的代码,它运行良好 当我把它放在yii上时,它不起作用。
答案 0 :(得分:3)
在模型类中创建一个getter函数,它将在单个字符串中返回两个字段的值,如下所示:
class Coa extends CActiveRecord {
// ...
public function getNamesaldo() {
return sprintf('%s %s', $this->name, $this->saldo);
}
// ...
}
然后正常获取记录而不使用任何 concat 函数,但这两个字段都应该在select查询中。因此,model函数可以在一个字符串中返回两者的值:
$model_data = Coa::model()->findAllBySql(
"SELECT id, name, saldo FROM coa where id_type = 1");
现在,请拨打listData
并指定模型属性id
和getter
名称,如下所示:
$list = CHtml::listData($model_data, 'id', 'namesaldo');
echo CHtml::dropDownList('id_coa', 'id', $list, array(
'prompt' => 'choose account', 'class' => 'form-control'));
全部:)
答案 1 :(得分:0)
变化
echo CHtml::dropDownList('id_coa','id', $list, array('prompt'=>'choose account','class'=>'form-control'));
到
echo CHtml::dropDownList('id_coa','id', $list, array('prompt'=>'choose account','class'=>'form-control'));
因为在CHtml :: dropdownlist中第二个参数是默认选择的值。您无法指定列名。