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

时间:2014-06-09 23:52:30

标签: yii

我有一个下拉列表。在下拉列表中,我使用listdata从另一个表中检索数据。但奇怪的是,它只能获得表格中的最后一项。

$form->dropDownList($model,'status_id',CHtml::listData(OrderStatus::model()->findAll(),'status_id', 'status'))

chtml::listdata奇怪地只显示此array(1) { [""]=> string(9) "Delivered" },而在表中有7行/ id,其中delivery是最后一个条目。其他人怎么了?

另一个奇怪的事实是$model->status_id实际上是id 1,所以它不应该显示'Delivered',它应该显示'New'。

3 个答案:

答案 0 :(得分:1)

看看这个:

示例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");

答案 1 :(得分:0)

查看您是否有任何默认范围。

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

答案 2 :(得分:0)

您的chtml :: listdata奇怪地显示  array(1){[“”] =>字符串(9)“已交付”}

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

在下面的通话中

CHtml :: listData(OrderStatus :: model()-> findAll(),'status_id','status')

status_id是生成的列表数组的键(array的索引),并且每次都会被相同的值覆盖,因此它仅显示一个值和最后一个值。