2010-03-19 12 views
1

Nous construisons une application Web de suivi des données à l'aide de CakePHP, et j'ai quelques problèmes pour bien faire la structure de la base de données. Nous avons des entreprises qui ont de nombreux sites. Les sites ont de nombreux DataSamples. Les tags ontAndBelongToMany Sites.Structure de la base de données pour les modèles CakePHP

Tout est bien mis en place. Le problème est de "classer" les sites dans les tags. Nous devons le stocker dans la base de données en tant qu'archive. J'ai créé un modèle de Rank qui est configuré comme ceci:

rank (
    id (int), 
    sample_id (int), 
    tag_id (int), 
    site_id (int), 
    rank (int), 
    total_rows) 
) 

Ainsi, la question est, comment puis-je créer des associations pour l'étiquette, le site et l'échantillon à établir un classement? À l'origine, je les ai définis comme haveMany. Mais les structures retournées ne m'amènent pas où je voudrais être.

Il ressemble à:

[Site] => Array (
    [Sample] = Array(), 
    [Tag] = Array() 
) 

Quand je suis vraiment pour:

[Site] => Array (
[Tag] = Array (
    [Sample] => Array (
     [Rank] => Array (
      ...data... 
     ) 
    ) 
) 
) 

Je pense que je ne peux pas être la base de données qui structurent correctement; donc si j'ai besoin de mettre à jour s'il vous plaît faites le moi savoir. Sinon, comment puis-je écrire une requête de recherche qui m'obtient où je dois être? Merci!

pensées? Besoin de plus de détails? Il suffit de demander!

+0

Est-ce que l'étiquette s'applique à l'échantillon ou au site? –

Répondre

1

Selon le format de données que vous voulez, je suggère aux balises hasMany samples.And les sites vous changer des échantillons haveMany assurez-vous que vous avez bulit la table qui est

samples_tags (
id (int), 
sample_id (int), 
tag_id (int) 
) 

Et vérifier aussi que vous avez défini les modèles association correctement. Plus de détails s'il vous plaît voir HABTM in cookbook.

1

Pour obtenir ce format ...

Tag hasOne échantillon hasOne échantillon ou hasMany Rang

L'alternative est de « modèle hack » comme je l'appelle, ce qui crée essentiellement des méthodes personnalisées avec le modèle classe, que exec exécute des requêtes personnalisées et formate les résultats comme vous le désirez.

Questions connexes