Tables sans relations

Par desbutes, il y a 9 ans


Bonjour,
Le contexte (cakephp 2.78) : mon taff est un petit element d'un projet plus gros, donc je dois m'adapter à la structure des tables est à l'ORM defini.
Soit deux tables campaign et bilan sans relations.
la table campaign contient entre autres un champ ordre: (1,2,3,4..integer).
La table bilan contient entre autres 4 champs: appel_1, appel_2,...appel_4.
Lorsque admin lance une campaign d'ordre 1 , je souhaiterais associer le contenu du champ appel_1 de la table bilans. Dans le controller ca fonctionne mon debug (suite au code ci dessous) , me récupère les champs appel_1 si Campaign.ordre=1 , ect idem pour 2,3,4.. dans la vue il ya deux foreach
-Vue: le foreach " campagne_cours" affiche ce que je souhaite -Vue le foreach "appels "n'affiche que sur la derniere valeur soit appel_3 et ne boucle pas sur appel_1, appel_2

Ce que je fais

1/Controller on cherche le nbre de campagne effectuées en utilisant le champ ordre <?php $d['campagne_cours']=$this->Treso2_campagne->find('all', array( 'fields'=>array('created','nom','ordre'), 'order'=>array('ordre ASC') )); ?> <?php foreach ($d['campagne_cours'] as $k=>$v): //On compte le nbre de campagnes pour associer combien de champ appel (appel_1,appel2, appel_3,..) //on debute par reconstruire en concatenant le nom de l'appel en fonction de l'ordre des campagnes ordre=1 appel =appel_1 $champ_appel="appel_".$v['Treso2_campagne']['ordre']; $d['appels']=$this->Treso2_bilan->find('all', array( 'fields'=>array($champ_appel), 'conditions'=>array('department_id'=>$this->Session->read('User.id') ), 'contain'=>false, )); endforeach; ?> // voir debug ci dessous ?> // j'envoie mon tableau $d et $champ_appel à ma vue $this->set(compact ('champ_appel')); $this->set($d); 2/ ma vue // j'ai rajouté les num lignes pour le débug //*286*/ <?php foreach($campagne_cours as $k=>$v):?> //meme si je déplace la boucle de la ligne 291 <?php foreach($appels as $k1=>$v1):?> vers ici ca ne change rien. <tr> <td><?= $v['Treso2_campagne']['created'] ?></td> <td><?= $v['Treso2_campagne']['nom'] ?></td> <?php foreach($appels as $k1=>$v1):?> //*292*/ <?php debug($champ_appel); //verif de la variable envoyée / /*293*/ debug($v1['Treso2_bilan'][$champ_appel]);?> <td><?= $v1['Treso2_bilan'][$champ_appel];?></td> </tr> <?php endforeach; ?> <?php endforeach; ?> <?php die(); ?>

Ce que je veux

Je souhaiterais que la vue boucle et affiche les valeurs appel_1 sur la ligne campagne1 , appel_2 sur la ligne campagne2, ect...

Ce que j'obtiens

Debug du controller (qui affiche bien ce que je souhaite) puis Debug de la vue en dessous //1/ resultats du debug controller array( (int) 0 => array( 'Treso2_bilan' => array( 'appel_1' => '20641.83' ) ) ) /app/Controller/TreasurieDepsController.php (line 223) array( (int) 0 => array( 'Treso2_bilan' => array( 'appel_2' => '20641.83' ) ) ) /app/Controller/TreasurieDepsController.php (line 223) array( (int) 0 => array( 'Treso2_bilan' => array( 'appel_3' => '21267.34' ) ) ) // fin resultats debug controller // 2/resultats du debug de la vue /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292) 'appel_3' /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293) '21267.34' /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292) 'appel_3' /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293) '21267.34' /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 292) 'appel_3' /app/View/TreasurieDeps/index_treasurie_dep.ctp (line 293) '21267.34' Date |Campagne |Somme appelée (BUG=>qui n'affiche que rvaleur de appel_3 sur toutes les lignes) 2016-10-13 17:22:34 | Appel 1er versement 2016-2017 2016 2017 |21267.34 2016-10-15 14:31:48 |Appel 2nd versement 2016 2017 |21267.34 2016-10-15 14:32:01| Appel 3eme versement 2016 2017 |21267.34 **Merci bcp pour votre aide éclairée Cordialement Desbutes**

Aucune réponse