2015-07-10 33 views
1

使用的ListData我想打一個下拉列表,可顯示的2個coloumns的毗連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'=>'choose account','class'=>'form-control')); 

並且表由的ID,ID_TYPE,名字和saldo

我想Concat的名字和saldo, 然後把它在下拉選項

我已經嘗試findAllBySql裏面的代碼,並且它工作得很好 當我把它放在警予,這不是」工作。

回答

3

創建模型類getter函數將在一個字符串返回兩個字段的值,就像這樣:

class Coa extends CActiveRecord { 
    // ... 
    public function getNamesaldo() { 
     return sprintf('%s %s', $this->name, $this->saldo); 
    } 
    // ... 
} 

然後提取記錄正常,而不使用任何CONCAT功能,但兩者字段應該在選擇查詢中。因此,模型的功能可以在一個字符串返回兩個值:

$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')); 

這是所有:)

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 ::下拉列表第二個參數是默認選擇的值。您不能指定列名稱。