0 votes

Modifier le type de find() du modèle contenu ou de la transformation de tableau

J'ai les associations de modèles suivantes :

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

Je souhaite créer un formulaire permettant de répondre à toutes les questions d'une enquête. J'ai donc utilisé ce qui suit pour renvoyer les données nécessaires :

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

Exemple de sortie para debug($questions) .

Questions

  1. Existe-t-il un contain() afin qu'un modèle associé soit renvoyé dans la base de données find('list') format pour que je puisse l'utiliser :

    f $this->Form->select('field_name', $question['Choice']) ; }

  2. Si aucune option n'est disponible, comment puis-je faire cela en utilisant les méthodes de construction de tableaux de PHP ?

PS : Le bloc foreach ne se transforme pas en bloc de code. Si quelqu'un peut l'éditer et le corriger, merci de le faire et de supprimer cette ligne. Je vous remercie.

0voto

Ramon Marco Navarro Points 424

Il l'a fait en utilisant :

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

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

Les choix "originaux" se trouvent toujours dans le tableau $questions, sans avoir été modifiés. Si quelqu'un connaît une meilleure approche, merci de la poster. Je vous remercie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X