在yii中使用listdata的Concat 2列

时间:2015-07-10 13:26:39

标签: php mysql list yii concat

我想制作一个可以显示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上时,它不起作用。

2 个答案:

答案 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并指定模型属性idgetter名称,如下所示:

$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中第二个参数是默认选择的值。您无法指定列名。