Bonjour Joomtex,
Peux-tu nous donner un peu plus d'infos, notamment sur la structure de
ton formulaire ?
Par ailleurs, pourquoi utilises-tu la clause "with" dans l'association
déclarée dans Annonce et pas ailleurs ?
Elle ne me semble pas utile dans ce contexte. Et si elle l'est, as-tu
vraiment créé le modèle AnnonceCaractere (sans le S à annonce
attention) ?
Dans un save() si tu es dans une action add(), Cake fera toujours des
INSERT dans ta table de liaison.
Par contre, si tu es dans une action edit(), il supprimera d'abord
tout ce qui se trouve dans la table et refera des INSERT.
Si tu obtiens des UPDATE, c'est qu'il y a un souci d'implémentation,
soit au niveau des modèles/associations, soit au niveau du formulaire.
Par principe, j'évite toujours d'avoir d'autres champs que les deux Id
dans une table de liaison représentant une HABTM, cela "casse" trop le
modèle et les conventions Cake et apporte forcément des casses-têtes
supplémentaires. Par ailleurs, ce n'est pas très "SQL Compliant"
d'avoir ce champ supplémentaire dans une relation "n:m"...
En espérant t'avoir donner des idées...
On 16 juil, 02:17, joomtex <[EMAIL PROTECTED]> wrote:
> Bonjour tout le monde,
> depuis quatre jours je me grille les neurones sur une sauvegarde de
> HABTM et là je jette k'éponge j'en peux plus:
>
> J'ai deux modeles Annonce et Caractere
>
> dans l'annonce :
>
> var $hasAndBelongsToMany = array(
> 'Caractere' => array('className' => 'Caractere',
> 'joinTable' =>
> 'annonces_caracteres',
> 'foreignKey' => 'annonce_id',
> 'associationForeignKey' =>
> 'caractere_id',
> 'unique' => true,
> 'with' => 'AnnoncesCaractere',
> 'conditions' => '',
> 'fields' => '',
> 'order' => '',
> 'limit' => '',
> 'offset' => '',
> 'finderQuery' => '',
> 'deleteQuery' => '',
> 'insertQuery' => ''
> );
>
> dans le Caractere :
> var $hasAndBelongsToMany = array(
> 'Annonce' => array('className' => 'Annonce',
> 'joinTable' =>
> 'annonces_caracteres',
> 'foreignKey' =>
> 'caractere_id',
> 'associationForeignKey' =>
> 'annonce_id',
> 'unique' => true,
> 'conditions' => '',
> 'fields' => '',
> 'order' => '',
> 'limit' => '',
> 'offset' => '',
> 'finderQuery' => '',
> 'deleteQuery' => '',
> 'insertQuery' => ''
> );
>
> ma table d'association :
> ( `annonce_id` int(11) NOT NULL,
> `caractere_id` int(11) NOT NULL,
> `values` varchar(255) default NULL,
> PRIMARY KEY (`annonce_id`,`caractere_id`),
> KEY `fk_annonces_caracteres_annonces` (`annonce_id`),
> KEY `fk_annonces_caracteres_caracteres` (`caractere_id`)
> )
>
> j'aimerais enregistrer avec chaque annonce ses caracteres et les
> valeurs qu'ils prenne pour cette annonce.
>
> j'ai fait en sorte pour avoir mes données sous cette forme :
>
> [Caractere] => Array
> (
> [0] => Array
> (
> [AnnoncesCaractere] => Array
> (
> [caractere_id] => 2
> [annonce_id] => 81
> [values] => aze
> )
>
> )
>
> [1] => Array
> (
> [AnnoncesCaractere] => Array
> (
> [caractere_id] => 8
> [annonce_id] => 81
> [values] => rty
> )
>
> )
>
> [2] => Array
> (
> [AnnoncesCaractere] => Array
> (
> [caractere_id] => 5
> [annonce_id] => 81
> [values] => uio
> )
>
> )
>
> [3] => Array
> (
> [AnnoncesCaractere] => Array
> (
> [caractere_id] => 7
> [annonce_id] => 81
> [values] => pqs
> )
>
> )
>
> )
> mais cake n'enregistre que la premiere valeur et après il fait des
> update , ce que je veux ces't qu'il fasse des INSERT à la place des
> UPDATE.
>
> MErci
--~--~---------~--~----~------------~-------~--~----~
Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---