Comment afficher une info d'une autre table

Par pierrot10, il y a 10 ans


Bonjour,

Voilà un moment que je n'ai plus mis les pied sur CakePHP et je dois m'y remettre. Je dois faire un changement un peu urgent concernant un flux RSS.

Ce que je fais

J'extrais des informations d'une base de donnée et je l'affiche en flux RSS
Voici le code de mon controller

/** * Feed RSS **/ function feed($id=null){ if($id==null){ $id = 0; } else if( $id == 0){ if($this->RequestHandler->isRss()){ $d['user'] = $this->User->find('all',array( 'limit'=>100, 'conditions' => array( 'User.former'=>1 ) )); } }else{ if($this->RequestHandler->isRss()){ $d['user'] = $this->User->find('all',array( 'limit'=>100, 'conditions' => array( 'User.id'=>$id ) )); } } return $this->set($d); }

et voici le code de mon fichier feed.cpt

<?php $this->set('channelData', array( 'title' => __('Users interest'), 'link' => $this->Html->url(array('controller'=>'users','action'=>'index'), true), // Le true ajout l'URL absolue 'description' => __("Flux User interest"), 'language' => 'fr-fr') ); foreach($user as $k=>$v){ $v = current($v); if($v['former'] == 1) { $description = "former ".$v['fonction_id']; } else { $description = "<img src='http://www.site.ites.ddd.ch/files/Images/People/".$v['id'].".jpg' style='width:150px;float:left;margin-right:20px;margin-bottom:10px;' />eeeee".$v['interest']; } echo $this->Rss->item(array(), array( 'title' => $v['firstname'].' '.$v['lastname'], 'link' => $this->Html->url('http://www.site.ites.ddd.ch/users/index/'.$v['id'], false), 'guid' => array('url' => $this->Html->url('/', true), 'isPermaLink' => 'false'), // Le lien permanent 'description' => $description, // 'pubDate' => $v['created'] 'pubDate' => "2014-09-23" // This is hidden from the CQ5 web site )); }

Ce que je veux

Cette partie affiche en fait un id

if($v['former'] == 1) { $description = "function: ".$v['fonction_id']; }

qui fait le lien avec ma table fonctions qui contient seulement deux colonnes : id et name.

Pour le moment ca m'affiche "function: 4", ou "function: 2",

Mais j'aimerais avoir "function : secretary", ou "function: administrator".

Je ne sais pas pourquoi, mais pour admin_edit(), ca fonctionne, mais pas pour feed().

Merci pour vos lumières

2 réponses

pierrot10, il y a 10 ans

En fait, j'ai trouvé. J'ai ajouté
$this->loadModel('Fonction');
$d['fonctions'] = $this->Fonction->find('list',array('order'=>'name ASC'));

function feed($id=null){ if($id==null){ $id = 0; } else if( $id == 0){ if($this->RequestHandler->isRss()){ $d['user'] = $this->User->find('all',array( 'limit'=>100, 'conditions' => array( 'User.former'=>1 ) )); $this->loadModel('Fonction'); // Le list recupere la valeur des IDs et cherche un champs qui a la valeur "name" $d['fonctions'] = $this->Fonction->find('list',array('order'=>'name ASC')); } }else{ if($this->RequestHandler->isRss()){ $d['user'] = $this->User->find('all',array( 'limit'=>100, 'conditions' => array( 'User.id'=>$id ) )); } }
Lartak, il y a 10 ans

Bonjour.
Puisque ton problème est solutionné, marques le sujet comme résolu sur ton dernier post.