2010-07-06 17 views
2

Je travaille sur une application immobilière, où une maison peut être répertoriée par un ou deux agents immobiliers. En tant que tel, j'essaie de suivre l'exemple donné dans la section 3.7.6.7 du livre de recettes de gâteau. Voici ce qui se passe dans mon modèle Realtors:Cakephp Plusieurs relations avec le même modèle

class Realtor extends AppModel { 
    var $primaryKey = $num; 
    var $name = 'Realtor'; 
    var $hasMany = array('Homes' => 
     array('className' => 'Home', 
       'foreignKey' => 'realtor_num', 
     ...), 
         'CoListedHomes' => 
     array('className' => 'Home', 
       'foreignKey' => 'realtor2_num', 
     ...) 
    ); 

Cela rompt complètement l'application, avec le message d'erreur « table de base de données pour co_listed_homes CoListedHomes modèle n'a pas été trouvé. » En référence au livre de recettes 3.7.6.7, deuxième exemple, il semble clair qu'ils ne devraient pas avoir ou avoir besoin de tables séparées "messages_received" et "messages_sent" dans leur base de données, alors qu'est-ce que je fais mal ? ETA: bizarrement (pour moi) Je pense avoir mis les relations en marche en inversant l'ordre des tableaux: le premier tableau, sur foreignKey = realtor2_num, s'appelle 'ListedHomes', le second tableau, sur foreignKey = realtor_num s'appelle 'Home'. Je suppose que ma question est alors, pourquoi l'ordre devrait-il avoir de l'importance, et pourquoi Cake aurait-il commencé à parler de tables de bases de données non fondées dans certaines circonstances?

Répondre

0

Juste au cas, je l'aurais construit comme une configuration de catégories. Puis créé une table de jointure entre la catégorie et la maison.

alors vous pouvez avoir une hasAndBelongsToMany beween les deux catégories et maisons

+0

Je suppose que j'ai mal indiqué le problème ou que je n'ai pas fourni suffisamment d'informations. Je vais marquer cela comme une réponse correcte, car une meilleure conception de la table en premier lieu me sauverait sûrement de ce type de problème! – thesunneversets

0

« table de base de données co_listed_homes pour le modèle CoListedHomes n'a pas été trouvé » se réfère probablement à vous de ne pas avoir un modèle défini pour CoListedHomes qui pointe vers la table homes. Je voudrais, cependant, coder cela comme un n: m autrement connu comme hasAndBelongsToMany, comme indiqué par DavidYell.

+0

Je n'avais certainement pas de modèle défini pour CoListedHomes, mais je n'avais pas non plus de modèle défini pour ListedHomes, qui a fonctionné plus tard. Je ne pense pas que vous devriez avoir besoin de définir des modèles ici; mais peut-être que Cake, ayant découvert un modèle 'Homes' comme premier élément du tableau $ hasMany, était alors contrarié que 'CoListedHomes' n'était pas un modèle aussi. (Cela peut expliquer pourquoi cela a fonctionné quand j'ai inversé la commande, donc le premier élément était un non-modèle.) Je suis d'accord qu'une relation HABTM était probablement la voie à suivre, au lieu de lutter avec l'invention de la catégorie hasAndBelongsToTwo. La prochaine fois! – thesunneversets

Questions connexes