2010-12-09 2 views
0

Je travaille sur un modèle qui va s'associer à lui-même plusieurs fois en utilisant une clé stockée dans un champ. de déclarer plus précisément ceci est un exemple de ma table avec quelques lignes:modèle associé à lui-même en utilisant un champ dans cakephp

id   name   association_id 
------------------------------------------------------------------ 
33   item0   1111 
34   item1   2222 
35   item2   2222 
36   item3   2222 
37   item4   NULL 

selon ces données nommées Item1 à item3 sont tous associés les uns aux autres mais pas avec item0 ou item4. le problème est que je ne sais pas comment implémenter cette association dans CakePHP. Il devrait être un hasMany mais est-il possible de connecter un mot avec le même champ (association_id) pointant sur lui-même, ne pointant pas sur la clé primaire qui est id ici? cette association_id sera générée à la volée si nécessaire pour connecter deux ou plusieurs éléments.

merci d'avance

Répondre

0

Vous devez normaliser votre table. Pour ce faire, vous auriez à diviser ce tableau comme ceci:

associations: 
id | name 

items: 
id | name | association_id 

Les relations du modèle seraient les suivantes:

Item belongsTo Association 
Association hasMany Item 

Si association_id est juste un peu de jetons dans votre table, Vous n'avez pas besoin de créer de relation supplémentaire. Juste interroger la table avec le champ de regroupement à l'esprit.

Espérons que ça aide!

+0

C'était au début mon option, mais les associations n'existent pas vraiment comme un objet autonome, elles n'existent que si les objets sont connectés les uns aux autres. et cet identifiant va être généré à la demande et supprimé à la volée, où aucune association n'existe. – mohamnag

+0

ok, le regroupement semble une bonne idée de toute façon! – mohamnag

Questions connexes