cadre yu Beaucoup de nombreuses relations
-
18-09-2019 - |
Question
Quelle est la méthode pour enregistrer et mettre à jour plusieurs à plusieurs dans le cadre Yii?
La solution
Il y a une meilleure mise en œuvre comme un comportement.
Autres conseils
Sauf si vous créez un modèle pour la table entre les deux principaux tableaux, votre seule option est d'utiliser DAO (Database Access Object) et spécifiez SQLs avec.
Regardez comment démo blog accomplit cette tâche.
utiliser le type de relation MANY_MANY
pour configurer plusieurs à plusieurs connexion entre modèles (Une table associative est nécessaire pour briser plusieurs-à-plusieurs dans un à-plusieurs)
Et vous pouvez maintenant utiliser toutes les fonctions relationnelles d'enregistrements actifs
L'extension suivante fait ce que vous voulez ... Yii Framework - Extension: cadvancedbehavior
Une chose importante à noter: sur chaque mise à jour, l'extension efface tous les enregistrements précédents et crée de nouveaux. Donc, je ne l'utiliser lorsque la table de intermediatry contient des données supplémentaires autres que les clés étrangères.
vous pouvez définir que dans MySQL level..by va à la vue relationnelle sous chaque table dans phpmyadmin et de fournir MANY_MANY l'utilisation des condition..and relationnelle nécessaire dans la classe de modèle dans les relations ..
La question est trop commune.
Habituellement composants de données avec de nombreuses relations à NOMBREUX apparaissent successivement et de manière indépendante. Donc, il vous suffit de faire une seule action d'insertion après l'autre.
Si votre relation a besoin la mise à jour en fonction, vous devriez utilisateur SQL déclenche au niveau DataBase. Cela va assurer l'intégrité des données et donnent une très bonne séparation dans la logique métier de l'application.
CREATE TRIGGER some_trigger
AFTER UPDATE ON some_table
...
END IF;
Une façon similaire à incapsulate données relationnelles en un seul modèle logique au niveau de PHP (et par exemple manipuler avec là 2-3 modèles AR) et émuler SQL déclencheurs logique en elle.