Bonjour,

Je débute avec cakePHP et j'ai un problème tout simple. Je l'expose.

J'ai des pays et des continents.
Un pays appartient à un continent.
J'ai créé deux tables, les modèles, les vues, les controllers.

C'est au niveau de l'association à la mode cakePHP que j'ai du mal, je m'explique.

Voici la définition de mes modèles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?php
class Pays extends AppModel {
	var $displayField ='nom';
	var $belongsTo = array(
		'Continent' => array(
			'classname' => 'Continent'));
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?php
class Continent extends AppModel {
	var $displayField ='nom';
	var $hasMany = array(
		'Pays' => array(
			'classname' => 'Pays',
			'foreignKey' =>  'continent_id',
	));
}
Dans un premier temps, j'ai cherché à afficher les pays avec les infos du continent associé :

dans le controller des pays :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
all = $this->Pays->find('all');
$this->set('all', $all);
et dans la vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<pre><?php echo 'all:'; print_r($all); ?></pre>
Ca fonctionne nickel, j'ai chaque pays avec les infos de son continent.


Maintenant, je veux afficher la liste des continents et avec chacun d'eux la liste des pays associés, or je n'y arrive pas.

Voilà le code dans le controller des continents :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$aa = $this->Continent->find('all');
$this->set('aa', $aa);
et le code dans la vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<pre><?php echo 'aa:'; print_r($aa); ?></pre>
Rien n'y fait, je n'ai que la liste des continents sans aucun pays.
Je pensais que la jointure serait automatique grâce à "hasMany", ce n'est pas ça ?

Merci pour votre aide.
A bientôt