Yii dropDownList嵌套条件(不是嵌套的dropDown)

时间:2013-06-25 10:01:08

标签: yii nested conditional-statements

在下拉列表中我想找到2个级别的数据。也许我的逻辑是错误的,但是我记得我以前做过这样的事情,唯一的区别是我总是得到一个简单的结果,但是现在,我应该处理一个数组。这是我的代码:

    echo $form->dropDownList($model, 'szeriaGyartmanyId', GxHtml::listDataEx(
        SzeriaGyartmany::model()->findAllAttributes(
            null, true, 'rajz_osszetett_technologia_id IN (:rajz_osszetett_technologia_id) AND keszDb<db', array(
                ':rajz_osszetett_technologia_id' => RajzOsszetettTechnologia::model()->findAllAttributes(
                    null, true, 'osszetett_technologia_id = :osszetett_technologia_id', array(
                        ':osszetett_technologia_id' => OsszetettTechnologia::model()->find("name='Horganyzás alatt'")->id
                    )
                )->id
            )
        )
    ), array('style' => 'width: auto', 'prompt' => ''));

核心返回一个ID,这没问题,但是第二级会返回一个数组(或对象数组?我不确定)。关键是,这里有可能以某种方式破坏产生的rajz_osszetett_technologia_ids,还是我必须完全不同?我试图将其内爆,但我得到了一个错误:参数必须是一个数组。所以这就是为什么我猜结果是一个对象数组。

我想要实现的目标是否明确?对我来说,以某种方式这样做似乎有点明显,但也许我的逻辑是完全错误的。有人可以指出我正确的方向吗? 非常感谢! BR ç

1 个答案:

答案 0 :(得分:0)

GxActiveRecord::findAllAttributes(null,true..)返回一个只包含所需属性的对象数组。为了获得所需的ID数组,您需要将其包装在GxHtml::listDataEx()中,然后使用array_keys仅获取密钥。

echo $form->dropDownList($model, 'szeriaGyartmanyId', GxHtml::listDataEx(
    ....
    ':rajz_osszetett_technologia_id' => implode(',',
        array_keys(
            GxHtml::listDataEx(
                RajzOsszetettTechnologia::model()->findAllAttributes(
                ....
                )
            )
        )
    )
    ....
)

也许自定义查询会比这更简单,更清晰。