2010-11-23 3 views
0

Tl; dr: (je préfère apprendre à pêcher que d'être nourris avec un poisson, mais je suis moi-même de la difficulté à enseigner les associations CakePHP avec DB 5 table)Association aide à CakePHP- Exemple de recherche de vols

Alors, je Je travaille sur un projet de recherche de vols avec une personne de la base de données. Il a conçu la base de données avec les clés étrangères appropriées et je lui fais confiance pour avoir fait un bon travail parce qu'il travaille avec des bases de données dans une grande Silicon Valley Co ..

Nous avons ces tables dans la base de données:

  1. voyages
  2. jambes
  3. segments (segment a est une partie d'une jambe et un voyage contient plusieurs jambes)
  4. aéroports
  5. aériennes

Je devrais probablement faire mon premier projet dans CakePHP avec un schéma plus simple mais ce n'est pas vraiment une option donc: Quelles sont les associations correctes ici?

En ce moment j'ai ceci:

Voyages jambes hasMany; foreignkey trip_id dans la table des jambes

Les jambes appartiennent à des voyages; clé étrangère trip_id dans la table des jambes

Jambes hasMany segments; clé étrangère leg_id dans la table des segments

Et c'est tout. Donc, clairement, j'ai besoin de plus pour utiliser pleinement CakePHP (je pense au moins) et je pense que je suis empêché par la conception de la base de données (il n'est pas garanti que mon ami l'a conçu de manière optimale). Je ne suis pas sûr de savoir comment faire les aéroports et les compagnies aériennes.

J'ai passé quelques heures à googler et relire le livre que j'utilise. Merci pour toute aide et avis généraux de CakePHP-Association/pensées que vous avez.

Répondre

2

Généralement, gardez vos associations dans les deux sens.

  • voyage hasMany Leg
  • Leg belongsTo voyage
  • Leg hasMany Segment
  • Segment belongsTo Leg

Cela vous permettra d'accéder à des modèles comme ceci:

$this->Leg->Segment->create(); 
$this->Segment->Leg->create(); 
$this->Segment->Leg->Trip->create(); 

Idem pour Leg et Segment. En outre, la convention de nommage pour les modèles CakePHP dicte qu'ils sont au singulier. :)