2009-10-14 11 views
0

Si je veux ajouter un enregistrement TABLEAU A, est là pour beaucoup (ou tous) les enregistrements d'une manière efficace d'ajouter un enregistrement dans la REJOIGNEZ TABLE en TABLEAU B?HABTM-Relation: Créer une relation pour tous les autres documents

Je tente de construire une gestion des tâches simple (dans CakePHP). Un utilisateur ajoute une tâche et ajoutera une connexion à chaque autre utilisateur dans le même groupe que l'utilisateur actuel .

Actuellement, j'utilise la méthode find ('list') pour récupérer les identifiants et pour les stocker dans une variable. Mais je pense que si les groupes se développent, le cache PHP ne gérera pas cette quantité de données dans une seule variable.

Répondre

1

Vous devez vous intéresser aux relations de type Hake-To-Many (HABTM). Vérifiez le livre de gâteau. Il vous permettra de créer une relation entre deux tables, en utilisant une table de jointure, et récupérera et sauvegardera automatiquement les valeurs comme demandé dans votre application.

Veuillez noter, cependant, que d'un modèle vous ne pouvez pas (par défaut) filtrer par critère sur le modèle associé (dans ce cas, le modèle lié par la table de jointure). Pour ce faire, vous devrez utiliser le comportement Containable, qui vous permettra de définir des critères de filtrage sur les tables liées. L'autre inconvénient est que je ne connais pas de moyen (prêt à l'emploi) d'ajouter des informations sur la relation dans la table de jointure. Par exemple, si vous voulez enregistrer (dans la table de jointure) si l'utilisateur a terminé la tâche, vous devrez y écrire vos propres choses. Je contourne généralement cela en créant un modèle pour la table de jointure, que j'appelle ensuite chaque fois que je veux récupérer des données spécifiques à la relation jointe. En faisant cela, vous pouvez également facilement extraire les données des tables jointes. Quelqu'un d'autre a une meilleure solution?

+0

Je connais déjà les principes des relations HABTM et comment les gérer dans cakephp. J'ai demandé un moyen de traiter un grand nombre de nouvelles relations sans manquer de cache. – Benedikt

Questions connexes