Lier les données de 2 tables avant l'affichage

Par ramdam, il y a 14 ans


Bonjour

Dans une page index.ctp d'un controller showroom j'affiche une liste d'annonces avec pour chacune d'elle une image de présentation.
Mes articles sont stockés dans la table posts et les images dans la table medias
Jusque là pas de soucis.

Mon problème est au moment de les lier ensemble dès l'index.
Car quand je liste mes annonces avec

$d'posts'] = $this->Paginate('Post', array('online' => 1, 'created <= NOW()'));
$this->set($d);

Je ne vois pas comment ajouter l'image correspondant à l'id puisque qu'elle ne se trouve pas dans la même table.
Y a t'il une méthode simple ou faut il faire quelque chose de plus compliqué pour arrivé au résultat voulu?

Merci d'avance pour votre aide

4 réponses

extrarox, il y a 14 ans

Salut,

As-tu des liaisons d'effectuer dans ta table? HasOne et BelongsTo?

ramdam, il y a 14 ans

J'ai un hasMany dans le model post (car je charge d'autres images dans l'affichage détaillé des annonces)

thqloz, il y a 14 ans

Et le public $belongsTo = 'Post', dans ton model Medias ?
J'avais pas vu le paginate, après rien ne t'empêche d'utiliser le Behaviour Containable (marche bien avec paginator).

ramdam, il y a 14 ans

J'avais pas pensé à utiliser le behaviour Containable
J'avais fait l'impasse sur le tuto...
Bref c'est ce qu'il me fallait.
Merci