yii CHtml::listData findall返回最后一个元素

byqmnocz  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(101)

我有一个下拉列表。在下拉列表中,我使用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'。

2guxujil

2guxujil1#

看看这个:
示例1:为类别生成列表数据

// you can use here any find method you think proper to return your data from db*/

    $models = categories::model()->findAll();

    // format models resulting using listData     
    $list = CHtml::listData($models, 'category_id', 'category_name');    
    print_r($list);

HTML输出(示例):

array("1" => "Arts", "2" => "Science", "3" => "Culture");
3qpi33ja

3qpi33ja2#

看看你是否有任何机会的默认范围。
只需调试OrderStatus::model()-〉findAll(),看看它是返回7条记录还是只返回1条。

1l5u6lss

1l5u6lss3#

您的chtml::listdata奇怪地显示数组(1){ [""]=〉string(9)“已传送”}
这是因为您必须在OrderStatus中所有行的status_id列中具有相同的条目,根据上述数组,该列为空/null。
在下面调用
(订单状态::model()-〉findAll(),'状态标识','状态')
status_id是你生成的列表数组的键(数组的索引),它每次都被相同的值覆盖,这就是为什么它只显示一个值。

相关问题