我有一个下拉列表。在下拉列表中,我使用listdata从另一个表中检索数据。但奇怪的是,它只得到表中的最后一项。
$form->dropDownList($model,'status_id',CHtml::listData(OrderStatus::model()->findAll(),'status_id', 'status'))
奇怪的是,chtml::listdata
只显示了这个array(1) { [""]=> string(9) "Delivered" }
,而在表中有7行/id,其中delivered是最后一个条目。其他的发生了什么?
另一件奇怪的事情是$model->status_id
实际上是id 1,所以它不应该显示'Delivered',它应该显示'New'。
3条答案
按热度按时间2guxujil1#
看看这个:
示例1:为类别生成列表数据
HTML输出(示例):
3qpi33ja2#
看看你是否有任何机会的默认范围。
只需调试OrderStatus::model()-〉findAll(),看看它是返回7条记录还是只返回1条。
1l5u6lss3#
您的chtml::listdata奇怪地显示数组(1){ [""]=〉string(9)“已传送”}
这是因为您必须在OrderStatus中所有行的status_id列中具有相同的条目,根据上述数组,该列为空/null。
在下面调用
(订单状态::model()-〉findAll(),'状态标识','状态')
status_id是你生成的列表数组的键(数组的索引),它每次都被相同的值覆盖,这就是为什么它只显示一个值。