CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 11-07-2015 18:18:48

HugoH
Chouquette
Date d'inscription: 11-07-2015
Messages: 2

[Résolu] Bake cannot generate associations for composite primary keys

Bonjour,

Je cherche depuis un moment, mais impossible de trouver la raison pour laquelle CakePHP trouve deux clés primaires dans mon modèle...

Voici ma table :

Code: "sql"

  1. CREATE TABLE IF NOT EXISTS `comments` (
  2.   `id` int(11) NOT NULL,
  3.   `album_id` int(11) DEFAULT NULL,
  4.   `photo_id` int(11) DEFAULT NULL,
  5.   `parent_id` int(11) DEFAULT NULL,
  6.   `user_id` int(11) NOT NULL,
  7.   `lft` int(11) DEFAULT NULL,
  8.   `rght` int(11) DEFAULT NULL,
  9.   `created` datetime NOT NULL,
  10.   `modified` datetime NOT NULL,
  11.   `deleted` datetime DEFAULT NULL,
  12.   `comment` varchar(511) NOT NULL
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14.  
  15. ALTER TABLE `comments`
  16.   ADD PRIMARY KEY (`id`),
  17.   ADD KEY `fk_comments_photos1_idx` (`photo_id`),
  18.   ADD KEY `fk_comments_albums1_idx` (`album_id`),
  19.   ADD KEY `fk_comments_users1_idx` (`user_id`),
  20.   ADD KEY `fk_comments_comments1_idx` (`parent_id`);
  21.  
  22. ALTER TABLE `comments`
  23.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
  24.  
  25. ALTER TABLE `comments`
  26.   ADD CONSTRAINT `fk_comments_comments1` FOREIGN KEY (`parent_id`) REFERENCES `comments` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  27.   ADD CONSTRAINT `fk_comments_photos1` FOREIGN KEY (`photo_id`) REFERENCES `photos` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  28.   ADD CONSTRAINT `fk_comments_users1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  29.   ADD CONSTRAINT `fk_comments_albums1` FOREIGN KEY (`album_id`) REFERENCES `albums` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;



Et voici le modèle généré avec `cake bake model` :

Code: php

  1. /**
  2.  * Comments Model
  3.  *
  4.  * @property \Cake\ORM\Association\BelongsTo $Albums
  5.  * @property \Cake\ORM\Association\BelongsTo $Photos
  6.  * @property \Cake\ORM\Association\BelongsTo $ParentComments
  7.  * @property \Cake\ORM\Association\BelongsTo $Users
  8.  */
  9. class CommentsTable extends Table
  10. {
  11.  
  12.     /**
  13.      * Initialize method
  14.      *
  15.      * @param array $config The configuration for the Table.
  16.      * @return void
  17.      */
  18.     public function initialize(array $config)
  19.     {
  20.         $this->table('comments');
  21.         $this->displayField('id');
  22.         $this->primaryKey(['id', 'album_id']); // Mais d'où vient la primary_key "album_id" ?
  23.         $this->addBehavior('Timestamp');
  24.         $this->addBehavior('Tree');
  25.         $this->belongsTo('Albums', [
  26.             'foreignKey' => 'album_id'
  27.         ]);
  28.         $this->belongsTo('Photos', [
  29.             'foreignKey' => 'photo_id'
  30.         ]);
  31.         $this->belongsTo('ParentComments', [
  32.             'className' => 'Comments',
  33.             'foreignKey' => 'parent_id'
  34.         ]);
  35.         $this->belongsTo('Users', [
  36.             'foreignKey' => 'user_id',
  37.             'joinType' => 'INNER'
  38.         ]);
  39.     }
  40.     // Et encore plein d'autres méthodes
  41. }

Avez-vous une idée de la raison pour laquelle CakePHP trouve deux clés primaires ?

Code: php

  1. $this->primaryKey(['id', 'album_id']);

Merci beaucoup !

Dernière modification par HugoH (13-07-2015 14:20:35)

Hors ligne

 

#2 13-07-2015 14:20:15

HugoH
Chouquette
Date d'inscription: 11-07-2015
Messages: 2

Re: [Résolu] Bake cannot generate associations for composite primary keys

Bon, en reprenant toute ma base de données à 0, j'ai réussi à faire le cake bake. C'était peut-être du cache.
Problème résolu ! smile

Hors ligne

 

#3 13-07-2015 14:59:55

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [Résolu] Bake cannot generate associations for composite primary keys

Bonjour,
merci pour ton retour, qui va probablement aider d'autres personnes.


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr