J'essaie de 'marquer' plusieurs 'points' avec plusieurs tags. Je marque mes points uniques avec succès. Malheureusement, lorsque j'essaie d'utiliser une balise, comme 'test2' sur un autre point en tant que balise, cela me donne une erreur d'entrée en double si mon 'unique' est défini sur false ou si 'unique' est défini sur true, il va del mon tag pour tous les autres points pour 'test2' et en créer un nouveau.CakePHP - HABTM - ajouter plusieurs tags à plusieurs points
Voici ce que j'ai pour mes données post:
Array
(
[Tag] => Array
(
[id] => 4b7af6d7-787c-4f10-aa49-2502c0a80001
[name] => Test2
)
[Point] => Array
(
[id] => 4b47c66f-a130-4d12-8ccd-60824051e4b0
)
)
Dans mon modèle tag i ont ceci:
public $hasAndBelongsToMany = array(
'Point' => array(
'className' => 'Point',
'joinTable' => 'points_tags',
'foreignKey' => 'tag_id',
'associationForeignKey' => 'point_id',
'unique' => false)
);
J'ai essayé avec l'ensemble 'unique' comme vrai aussi. Malheureusement, cela supprimera toutes les autres instances de 'Test2' dans la table de jointure ('points_tags').
J'ai essayé à l'aide à la fois économiser() et saveAll(). Les deux me donnent cette erreur:
Avertissement (512): erreur SQL: 1062: entrée en double '4b7af6d7-787c-4F10-aa49-2502c0a80001-4b47c66f-a130-4d12-8ccd-608' pour la touche 'MAN_ADD' [ CORE/cake/libs/model/datasources/dbo_source.php, ligne 527] Query: INSERT INTO points_tags
(tag_id
, point_id
, id
) VALUES ('4b7af6d7-787c-4F10-aa49-2502c0a80001', '4b47c66f-a130-4d12 -8ccd-60824051e4b0 ',' 4b7b39f3-46f8-4744-ac53-3973c0a80001 ')
Pensées ????
Suggestions ????
L'identifiant dont vous parlez est soit tag_id, soit point_id. tag_id est de la balise si elle existe déjà et point_id est l'identifiant de l'objet que j'essaye de taguer. Le problème dans mon esprit est que l'entrée points_tags est écrasée si une entrée est déjà présente dans un autre élément. Par exemple: point 'a' a une étiquette - test de si je veux aussi le point tag 'b' avec étiquette 'test', il supprimera l'entrée actuelle points_tags pour le point 'a' tag ' test 'et insérez une entrée pour le point' b 'avec l'étiquette' test '. Par conséquent supprimer toutes les associations précédentes faites avec «test». Est-ce que cela vous clarifie? – zmonteca