Bonjour,

Je débute avec CakePHP et je commence vraiment à l'adopter.
Seulement, j'ai un petit soucis au niveau des relations entre plusieurs modèles.

J'ai un modèle "Addresses"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Addresses extends AppModel {
    public $name = 'Addresses';
    public $useTable = 'Addresses';
    public $table = 'Addresses';
    public $primaryKey = 'ID';
    public $hasMany = array(
        'Members' => array(
            'className'  => 'Members',
            'foreignKey' => 'Address_ID'
        ),
        'Instructors' => array(
            'className'  => 'Instructors',
            'foreignKey' => 'Address_ID'
        ),
        'Schedules' => array(
            'className'  => 'Schedules',
            'foreignKey' => 'Address_ID'
        )
    );
}
Et 3 autres modèles par exemple Members
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class Members extends AppModel {
    public $name = 'Members';
    public $useTable = 'Members';
    public $table = 'Members';
    public $primaryKey = 'ID';
    public $hasOne = array(
        'Addresses' => array(
            'className'    => 'Addresses',
            'foreignKey'    => 'ID'
        )
    );
}
Voici le résultat de la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->Members->find('all');
On peut constater que la partie 'Addresses' est null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
array(
	(int) 0 => array(
		'Members' => array(
			'ID' => '7',
			'FirstName' => 'Christopher',
			'LastName' => 'Rombach',
			'Mail' => 'ngrooog@jgir.com',
			'Sex' => true,
			'Birthday' => '1986-11-07',
			'Personnal' => true,
			'Group' => true,
			'GSM' => '1165161',
			'Phone' => '156156',
			'Address_ID' => '1',
			'Created' => '2012-11-02',
			'Edited' => '2012-11-02'
		),
		'Addresses' => array(
			'ID' => null,
			'Street' => null,
			'Number' => null,
			'PostalCode' => null,
			'City' => null
		)
	)
)
Et la requête générée par CakePHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT `Members`.`ID`, `Members`.`FirstName`, `Members`.`LastName`, `Members`.`Mail`, `Members`.`Sex`, `Members`.`Birthday`, `Members`.`Personnal`, `Members`.`Group`, `Members`.`GSM`, `Members`.`Phone`, `Members`.`Address_ID`, `Members`.`Created`, `Members`.`Edited`, `Addresses`.`ID`, `Addresses`.`Street`, `Addresses`.`Number`, `Addresses`.`PostalCode`, `Addresses`.`City` FROM `evidencefbase`.`Members` AS `Members` LEFT JOIN `evidencefbase`.`Addresses` AS `Addresses` ON (`Addresses`.`ID` = `Members`.`ID`) WHERE 1 = 1
Comment puis-je faire pour spécifier de ne pas faire une jointure sur `Members`.`ID` mais sur `Members`.`Address_ID` pour récupérer la partie "Address" qui est liée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT `Members`.`ID`, `Members`.`FirstName`, `Members`.`LastName`, `Members`.`Mail`, `Members`.`Sex`, `Members`.`Birthday`, `Members`.`Personnal`, `Members`.`Group`, `Members`.`GSM`, `Members`.`Phone`, `Members`.`Address_ID`, `Members`.`Created`, `Members`.`Edited`, `Addresses`.`ID`, `Addresses`.`Street`, `Addresses`.`Number`, `Addresses`.`PostalCode`, `Addresses`.`City` FROM `evidencefbase`.`Members` AS `Members` LEFT JOIN `evidencefbase`.`Addresses` AS `Addresses` ON (`Addresses`.`ID` = `Members`.`Address_ID`) WHERE 1 = 1
Merci pour vos réponses.