De nombreuses de Nombreuses Relations
Je vois toutes sortes de façons différentes de gérer de nombreuses de nombreuses relations dans Yii. Cependant, les exemples que je vois ne sont pas bien définis et j'ai l'impression de manquer quelque chose.
Par exemple, Larry Ullman le tutoriel de ne pas utiliser le self::MANY_MANY relation http://www.larryullman.com/2010/08/10/handling-related-models-in-yii-forms/
Pour autant que l'ajout et la récupération des documents, quel est le moyen standard pour la gestion de Nombreux de Nombreux dans le Modèle, le Contrôleur et la Vue?
précisions: je suppose que je cherche un exemple avec 2 tables liées par plusieurs-à-plusieurs, où je peux voir non seulement les deux modèles, mais les contrôleurs et les vues ainsi donc, je peux comprendre pleinement ce qui se passe.
OriginalL'auteur djt | 2011-03-08
Vous devez vous connecter pour publier un commentaire.
Vous avez réellement besoin de la 3 tables (donc un supplément de modèle pour le tableau croisé dynamique), mais une fois que vous avez que vous pouvez réellement utiliser le yii rapport de la fonctionnalité.
Par exemple, un projet de la mine a plusieurs-à-plusieurs relation entre un Achat et une Transaction (s'il vous plaît ne me demandez pas pourquoi 🙂 ). Il y a donc un modèle d'Achat, un modèle transactionnel et un PurchaseToTransaction modèle qui établit des liens entre eux. Je peux juste faire un $oPurchase->les opérations et Yii va gérer le plusieurs-à-plusieurs partie à l'aide de la relation, elle est définie comme suit:
Noter que pour les Transactions, le même mais dans l'autre sens:
De sorte que les deux $oPurchase->les opérations et $oTransaction->achats sont automatiquement gérées par Yii.
En conclusion, on peut en effet gérer plusieurs-à-Plusieurs en utilisant les relations (au moins la partie lecture, de l'écriture vous avez encore besoin de solutions arbitraires).
et quelles en seraient les solutions arbitraires? Aussi, dois-je créer un modèle pour la table de bridge?
oui, vous devez créer le modèle, mais il peut juste être un modèle vide avec le nom du tableau croisé dynamique, aucune autre logique. Ce que les autres solutions, il n'y a à ce comportement, par exemple: yiiframework.com/extension/save-relations-ar-behavior en outre, la dernière Yii versions incluent l'amélioration de la fonctionnalité: code.google.com/p/yii/issues/detail?id=1117
Vous n'avez pas besoin de créer une classe de modèle pour la table intermédiaire, sauf si il y a de la logique supplémentaire que vous souhaitez joindre.
Kantor, mais si il n'est pas nécessaire de créer un modèle pour la table intermédiaire comment voulez-vous sauvegarder les enregistrements dans cette table?
OriginalL'auteur Blizz
Je suis juste en utilisant Yii. Juste un idée de base. Si vous pensiez que Un à Plusieurs n'est pas un problème, alors vous avez besoin pour créer un milieu de table en entre comme pour les Utilisateurs et les Commandes, créer un UsersOrders table pour ces touches. Ensuite, on crée une fonction pour obtenir ces tables liées dans la classe comme $this->UsersOrders->Commandes() pour la fonction Commandes dans Utilisateur classe, et vice versa.
De nombreux de Nombreux est en fait groundup en 3 tableaux. 2 tables, mais les plus cachés de la table au milieu.
Ok, si Yii ne le gère pas. On peut étendre le contrôleur avoir comme $this->Commandes() dans les Utilisateurs de contrôleur pour obtenir la liste de toutes les Commandes, ainsi que d'autres fonctions à ajouter/supprimer des relation.
Mais Yii poignée. Vérifiez la documentation.
Avez-vous tester? L'année dernière, quand j'ai essayer de jouer avec elle, il ne semble pas entièrement pris en charge. Si oui, alors nous ne devrions pas besoin de penser à table intermédiaire comme accepté la réponse ci-dessus. Il convient de gérer automatiquement. À moins que Yii a pleinement le soutenir dans la dernière version.
OriginalL'auteur CallMeLaNN