Yii - DB一次显示两列数据

时间:2014-10-27 05:44:54

标签: php yii

如何使用不同的列一次显示db数据?

这是我的YII下拉列表:

echo CHtml::dropDownList('select_gamecat',"",
     CHtml::listData(GamesType::model()->findAll(),
     'id', 'descr_en', 'descr'), //<--here
     array(
         'empty' =>  Yii::t('labels', 'choosecat'),
         'id' => "select_gamecat", 
         'class' => "inputs",
         'style'=>'width:369px'
      ));

我希望合并'descr_en''descr'

我尝试了'desrc_en.desrc''desrc_en + desrc',但两者都无效。

有什么建议吗?谢谢

enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用anonymous function

进行尝试
echo CHtml::dropDownList('select_gamecat',"",
     CHtml::listData(GamesType::model()->findAll(),
            'id', function($data){
                return $data->descr_en.$data->descr; 
            }),
     array('empty' =>  Yii::t('labels', 'choosecat'),'id' => "select_gamecat", 'class' => "inputs",'style'=>'width:369px'));

<强>释

Yii将检查第三个参数是否是匿名函数,如果是,它将运行它(使用call_user_func)并且第一个参数是当前模型。

答案 1 :(得分:0)

您可以重新创建数组,如下:

$models = GamesType::model()->findAll();
$data = array();

foreach ($models as $model)
    $data[$model->id] = $model->descr_en . ' '. $model->descr;     

echo CHtml::dropDownList($model, 'id', $data ,array('prompt' => 'Select'));

答案 2 :(得分:0)

您需要在模型类GamesType中创建一个getter:

class GameTypes extends CActiveRecord {
    # ...
    public function getDesrc_enAndDesrc() {
        return "$this->desrc_en $this->desrc";
    }
    # ...
}

然后使用上面的getter作为CHtml::listData方法中的属性:

echo CHtml::dropDownList('select_gamecat',"",
     CHtml::listData(GamesType::model()->findAll(),
     'id', 'Desrc_enAndDesrc'), # <== HERE
     array('empty' =>  Yii::t('labels', 'choosecat'),'id' => "select_gamecat", 'class' =>     "inputs",'style'=>'width:369px'));