0

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

    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 c

4

1 回答 1

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(
                ....
                )
            )
        )
    )
    ....
)

也许自定义查询会比这更容易和更清晰。

于 2013-06-25T10:04:52.790 回答