Изменить тип поиска () содержащейся модели или преобразования массива - PullRequest
0 голосов
/ 15 мая 2010

У меня есть следующие ассоциации моделей:

Response->Survey
Response->Question
Response->Choice
Survey->Question
Question->Choice

Я хочу создать форму, где я мог бы ответить на все вопросы для одного опроса. Поэтому я использовал следующее, чтобы вернуть необходимые данные:

$questions = $this->Response->Question->find('all', array(
    'conditions' => array('survey_id' => $id), 
    'contain' => array('Choice')
    )
);

Пример вывода для debug($questions).

Вопросы

  1. Есть ли опция contain(), чтобы связанная модель возвращалась в формате find('list') , чтобы я мог использовать:

    foreach ($ question как $ questions) { $ this-> Form-> select ('field_name', $ question ['Choice']); }

  2. Если ни одна опция недоступна, как я могу сделать это, используя методы построения массивов PHP?

PS: блок foreach не превратится в блок кода. Если кто-то может отредактировать и исправить это, сделайте это и удалите эту строку. Спасибо.

1 Ответ

0 голосов
/ 16 мая 2010

Сделал это с помощью:

$keys = array();
$values = array(); 

foreach($question['Choice'] as $choice) {
    array_push($keys, $choice['id']);
    array_push($values, $choice['choice']);
}
$choices = array_combine($keys, $values);

'Оригинальные' варианты все еще находятся в массиве $ questions, без изменений. Если кто-нибудь знает лучший подход, пожалуйста, опубликуйте его. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...