IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

CakePHP 2.2.3 Relation entre différents modèle


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut CakePHP 2.2.3 Relation entre différents modèle
    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.

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 37
    Points
    37
    Par défaut
    Dans Members tu as mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public $hasOne = array(
            'Addresses' => array(
                'className'    => 'Addresses',
                'foreignKey'    => 'ID'
            )
        );
    Tu dois mettre foreignKey => 'Address_ID'

    Tu ne respectes pas les conventions (modèles au singulier), c'est une nouvelle app ou une refonte d'une app sous cake ?

Discussions similaires

  1. [XL-2000] Relation entre différents tableaux
    Par karstou dans le forum Excel
    Réponses: 13
    Dernier message: 03/02/2012, 08h52
  2. [GPS] Problème trames NMEA entre différents modèles de PDA
    Par Julien_G dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 14/05/2009, 12h07
  3. Réponses: 6
    Dernier message: 05/11/2008, 13h06
  4. Modèle abstrait et relations entre interfaces
    Par behess dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 03/06/2008, 21h55
  5. Relation entre tables dans bdd différentes
    Par Mandotnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/03/2006, 08h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo