Question

J'utilise Codeigniter 2.1.0 avec le spark pour activer PHP ActiveRecord et je suis incapable de créer une association plusieurs à plusieurs via une table de recherche.Chaque fois que je charge le modèle d'événement, il échoue avec "Impossible de trouver les catégories d'événements d'association dans le modèle d'événement", qui est une exception ActiveRecord\HasManyThroughAssociationException.

Conformément à ce sujet J'ai essayé de mettre à jour ma source avec ce patch sans effet.

j'ai aussi suivi ce fil et j'ai basé mon association sur la solution qui y est donnée.

J'ai fini avec le SQL suivant : http://pastebin.com/ya65VWHCet les modèles suivants : http://pastebin.com/XEDTb6KS

J'essaie d'associer un événement à plusieurs catégories, par exemple un événement de match de football pourrait avoir les catégories « sports », « famille » et « divertissement ».

Ai-je raté quelque chose de fondamental ?

Était-ce utile?

La solution

Je ne suis pas en mesure de tout tester car je n'ai pas de base de données dans laquelle je pourrais vider votre code (et je n'ai pas non plus de données de test :) ), mais votre code présente quelques différences avec le manuel.

Si vous regardez cette page : http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through

Vous voyez trois tableaux, cette carte comme celle-ci (je pense)

 Order        -> Category   
 Payment      -> Eventcategory 
 User         -> Event

UN Category a plusieurs Events à travers Eventcategory, tout comme un Order a plusieurs Users à travers Payment dans l'exemple.L’inverse est défini de manière plus basique (un User a Orders)

Là où vous avez défini 2 relations "through", cet exemple n'en a qu'une dans le Order classe, quittant le user avec juste un has_many.C'est une grande différence que vous devrez peut-être aborder, je pense.

De plus, je ne suis pas vraiment sûr du foreign_key définitions que vous faites dans cette partie :

array('events', 'foreign_key' => 'event_id',
              array('through' => 'eventcategories', 'foreign_key' => 'event_id')

Si vous disposez du schéma de dénomination par défaut, vous n'avez pas besoin de vous soucier de les nommer explicitement.

Pour résoudre ce problème, je commencerais par l'exemple de commande/utilisateur/paiement, vérifierais qu'il fonctionne pour vous, puis remplacerais toutes les pièces (soigneusement :)) pour qu'il devienne votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top