我在模型jobs
中有2个属性,它们是tag
和category
,我想创建一个dropDownList,显示tag
category
的值$s= CHtml::listData($model2, 'salary', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s);
等于'薪水',这是我的代码:
{{1}}
我的数据库:
标签/类别
1 / val1
2 / val1
a / val2
1000 /工资
2000 / salary
但我得到了一个dropDownList,它只包含具有这些条件的最后一个值。我的代码有什么问题?
答案 0 :(得分:1)
有两个原因导致您只能获得一个结果,首先您在$model2
中获得的结果数会影响结果,请检查您是否使用findAll
返回与a匹配的所有行条件而非find
和findByPk
,因为它们只返回一个值,
其次,listData的第二个属性应该是你的值字段'salary'不是模型的属性,这必须是valueField(see this)。
如果它被指定为salary
,它将保持不变 - 所有选项元素的常量值,这意味着您的数组将被覆盖每个到达,留下包含最后一个值的一个元素的数组。
你应该'tag_id'/'id'或你的模型或标签值中的某种主键(假设它是唯一的)来识别标签
$model2 = MyModel::model()->findAll("category = salary");
$s= CHtml::listData($model2, 'tag', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s,array('empty'=>'--Select--'));