2013-06-25 7 views
0

в выпадающем меню Я хотел бы найти данные на 2 уровнях. Может быть, моя логика ошибочна, но, насколько я помню, я делал такие вещи раньше, единственное различие заключалось в том, что у меня всегда был один простой результат, но теперь я должен обрабатывать массив. Вот мой код:Yii dropDownList вложенные условия (не вложенные dropDown)

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' => '')); 

ядро ​​возвращает один единственный идентификатор, это не проблема, но второй уровень возвращает массив (или массив объектов я не уверен?). Дело в том, возможно ли здесь каким-то образом взорвать итоговые rajz_osszetett_technologia_ids, или мне нужно делать совершенно по-другому? Я попытался взорвать его на месте, но я получил ошибку: Аргумент должен быть массивом. Поэтому я думаю, что результатом является массив объектов.

Понятно, чего я хотел бы достичь? Для меня кажется очевидным сделать это так или иначе, но, может быть, моя логика совершенно неверна. Может кто-нибудь, пожалуйста, указать мне в правильном направлении? Спасибо большое! BR c

+0

Это то, чего вы пытаетесь достичь? http://jsfiddle.net/dUcVT/ – adamors

+0

нет, я хотел бы найти на первом этапе идентификатор технологии в таблице технологий. Это работает. Второй шаг, я хотел бы найти все идентификаторы в соответствующей таблице, относящиеся к technologyId, и обеспечить его таким образом (kinda imploded): (id1, id2, id3 ...), и на последнем этапе найти данные в 3-я таблица, касающаяся иммобилизованных идентификаторов. – user2511599

ответ

0

GxActiveRecord::findAllAttributes(null,true..) возвращает массив объектов с заданными свойствами. Чтобы получить массив идентификаторов по мере необходимости, его необходимо обернуть в GxHtml::listDataEx(), а затем используйте array_keys для получения только ключей.

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

Возможно, пользовательский запрос будет проще и понятнее этого.

+0

работает почти отлично, большое вам спасибо, но интересно то, что в результате запроса получается 2 строки, и я могу видеть только одну строку в раскрывающемся списке. Почему это может быть? – user2511599

+0

Это внешний или внутренний запрос, который имеет 2 строки? – topher

+0

это, возможно, не связано с решением. – user2511599