Php 在yii中使用listdata压缩2列
我想做一个下拉列表,可以显示2列的concat 这是我的密码:Php 在yii中使用listdata压缩2列,php,mysql,list,yii,concat,Php,Mysql,List,Yii,Concat,我想做一个下拉列表,可以显示2列的concat 这是我的密码: $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'=>'choos
$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类型、名称和saldo组成
我想把name和saldo联系起来,
然后把它放在下拉选项中
我尝试了findAllBySql中的代码,它工作得很好
当我把它放在yii上时,它不起作用。改变
echo CHtml::dropDownList('id_coa','id', $list, array('prompt'=>'choose account','class'=>'form-control'));
到
因为在CHtml::dropdownlist中,第二个参数是默认的选定值。无法指定列名。在model类中创建一个getter函数,该函数将在单个字符串中返回两个字段的值,如下所示:
class Coa extends CActiveRecord {
// ...
public function getNamesaldo() {
return sprintf('%s %s', $this->name, $this->saldo);
}
// ...
}
然后在不使用任何concat函数的情况下正常获取记录,但这两个字段都应位于select查询中。因此,模型函数可以在一个字符串中返回这两个值:
$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'));
就这些:)
$list = CHtml::listData($model_data, 'id', 'namesaldo');
echo CHtml::dropDownList('id_coa', 'id', $list, array(
'prompt' => 'choose account', 'class' => 'form-control'));