在 yii 中使用 listdata 连接 2 列
Concat 2 columns using listdata in yii
我想制作一个下拉菜单,它可以显示 2 列的连接
这是我的代码:
$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'));
和 table 由 id, id_type, name 和 saldo.
组成
我想连接 name 和 saldo,
然后把它放在下拉选项中
我已经尝试了 findAllBySql 中的代码,它运行良好
当我把它放在 yii 上时,它不起作用。
改变
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 中第二个参数是默认选择值。您不能指定列名。
在模型 class 中创建一个 getter 函数,它将 return 两个字段的值放在一个字符串中,如下所示:
class Coa extends CActiveRecord {
// ...
public function getNamesaldo() {
return sprintf('%s %s', $this->name, $this->saldo);
}
// ...
}
然后不使用任何 concat 函数照常获取记录,但是两个字段都应该在 select 查询中。因此,模型函数可以 return 一个字符串中的两个值:
$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'));
就这些了:)
我想制作一个下拉菜单,它可以显示 2 列的连接
这是我的代码:
$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'));
和 table 由 id, id_type, name 和 saldo.
组成我想连接 name 和 saldo, 然后把它放在下拉选项中
我已经尝试了 findAllBySql 中的代码,它运行良好 当我把它放在 yii 上时,它不起作用。
改变
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 中第二个参数是默认选择值。您不能指定列名。
在模型 class 中创建一个 getter 函数,它将 return 两个字段的值放在一个字符串中,如下所示:
class Coa extends CActiveRecord {
// ...
public function getNamesaldo() {
return sprintf('%s %s', $this->name, $this->saldo);
}
// ...
}
然后不使用任何 concat 函数照常获取记录,但是两个字段都应该在 select 查询中。因此,模型函数可以 return 一个字符串中的两个值:
$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'));
就这些了:)