Yii CHtml::listdatafindall返回最后一个元素

Yii CHtml::listdatafindall返回最后一个元素,yii,Yii,我有一个下拉列表。在dropdownlist中,我使用listdata从另一个表中检索数据。但奇怪的是,它只得到表中的最后一项 $form->dropDownList($model,'status_id',CHtml::listData(OrderStatus::model()->findAll(),'status_id', 'status')) chtml::listdata奇怪地只显示了这个array(1){[“”]=>string(9)“Delivered”}而表中有7行/i

我有一个下拉列表。在dropdownlist中,我使用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\u id实际上是id 1,所以它不应该显示“Delivered”,而应该显示“New”。

看看这个:

示例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输出(示例):


看看你是否有一个默认的作用域


只需调试OrderStatus::model()->findAll(),看看它是返回7条记录还是只返回1条记录。

您的chtml::listdata奇怪地显示出来 数组(1){[“”]=>字符串(9)“已传递”}

是因为在OrderStatus中的所有行的status_id列中必须有相同的条目,根据上述数组,该行为空/空

在下面的通话中

CHtml::listData(OrderStatus::model()->findAll(),'status\u id','status')


status_id是生成的列表数组的键(数组索引),它每次都被相同的值覆盖,这就是为什么它只显示一个值和最后一个值。

表中的字段名是什么?您是否还有一个
defaultScope()
?在状态栏中,我有新的、正在处理的、已发货的、退货请求、已取消的、退款的、已交付的。是的,我有
defaultscope()
,但即使我删除它,也会出现同样的问题。我的意思是列名称是什么?是您的主键列
状态\u id
?是,这是主键。它会出现在右边的一栏,否则“delievered”就不会出现。这真奇怪。我唯一能做的就是现在在数组中手动输入它(我知道,很糟糕)。当我进行var_转储时,它返回所有7。是的,我确实有一个默认作用域,但我删除了它,这仍然是相同的问题。请粘贴打印结果(OrderStatus::model()->findAll())。你确定你有一个名为“status\u id”的栏目,而且它不仅给了我“id”<代码>阵列([]=>已交付)
。。而不是整个名单。
    array("1" => "Arts", "2" => "Science", "3" => "Culture");