Was ist die Methode zum Speichern und Aktualisieren von Viele-zu-viele-Beziehungen in Yii-Framework?Yii-Framework Viele zu vielen Beziehungen
Antwort
Es gibt eine bessere Umsetzung als Verhalten.
Wenn Sie kein Modell für die Tabelle zwischen den beiden Haupttabellen erstellen, besteht die einzige Möglichkeit darin, DAO (Database Access Object) zu verwenden und SQL mit diesem anzugeben.
Schauen Sie sich an, wie Blog-Demo diese Aufgabe erfüllt.
Verwendung MANY_MANY
Beziehungstyp zum Einrichten von vielen zu vielen Verbindungen zwischen Modellen (Eine assoziative Tabelle ist erforderlich, um eine Viele-zu-viele-Beziehung in 1: n-Beziehungen zu trennen) Und jetzt können Sie alle relationalen Funktionen von Active verwenden Aufzeichnungen
Yii Framework - The Definitive Guide to Yii: Working with Databases-Relational Active Record
Sie, dass bis in mysql level..by gehen relationale Sicht unter jeder Tabelle in phpMyAdmin und bieten notwendige relationale condition..and Verwendung MANY_MANY in der Modellklasse innerhalb Beziehungen ..
die folgende Erweiterung tut, was Sie wollen ... Yii Framework - Extension: cadvancedbehavior
Eine wichtige Sache zu beachten: Bei jeder Aktualisierung, die Erweiterung alle bisherigen Rekorde löscht und schafft neue. Ich würde es also nicht verwenden, wenn die intermediäre Tabelle zusätzliche Daten außer den Fremdschlüsseln enthält.
Die Frage ist zu häufig.
Normalerweise erscheinen Datenkomponenten mit MANY to MANY-Beziehungen nacheinander und unabhängig voneinander. Sie müssen also nur eine Aktion nach der anderen einfügen.
Wenn Ihre Beziehung abhängige Aktualisierung benötigt, sollten Sie Benutzer SQL triggers auf der DataBase-Ebene. Dies gewährleistet die Integrität der Daten und ermöglicht eine recht gute Trennung der Geschäftslogik der Anwendung.
CREATE TRIGGER some_trigger
AFTER UPDATE ON some_table
...
END IF;
ähnliche Weise ist relationale Daten in einem logischen Modell auf PHP Ebene (und z.B. manipuliert mit 2-3 AR-Modellen gibt) emulieren und incapsulate SQL löst Logik darin.
- 1. Linq zu Sql Viele zu vielen Beziehungen
- 2. Ember Data - Viele zu vielen Beziehungen?
- 3. CoreData -zu vielen Beziehungen
- 4. UML-Klassenmodell, wie man viele zu vielen Beziehungen modelliert
- 5. Wie man viele zu vielen Beziehungen synchron mit Nhibernate hält?
- 6. Viele-zu-viele Beziehungen Beispiele
- 7. Benennung Tabellen in vielen zu vielen Beziehungen Laravel
- 8. LINQ to SQL: Gefälschtes Repository mit vielen-zu-vielen Beziehungen?
- 9. Entity Framework Abfragen einer Beziehung von vielen zu vielen Beziehungen
- 10. EF4 Änderungen von vielen zu vielen Beziehungen überprüfen
- 11. Modellierung einer Beziehung zu vielen Beziehungen Kerndaten
- 12. Schienen - Viele-zu-viele-Beziehungen - Datenproblem?
- 13. Festlegen eines Standardflags - Viele-zu-viele-Beziehungen
- 14. Viele-zu-viele Beziehungen in Breeze
- 15. LINQ Viele-zu-viele-Beziehungen: Lösung?
- 16. Laravel-Logrevisionen für Viele-zu-Viele-Beziehungen
- 17. Viele-zu-viele-Beziehungen in MySQL
- 18. viele zu viele Beziehungen in Subsonic 3
- 19. Learning Yii2: viele zu viele Beziehungen eifrig
- 20. Viele-zu-viele Beziehungen in Nhibernate
- 21. Viele zu viele Beziehungen in elasticsearch
- 22. Grails Domains - Multiple viele zu viele Beziehungen
- 23. Attribute in Viele-zu-Viele-Beziehungen (Hibernate)
- 24. Viele zu viele Beziehungen mit ServiceStack.Ormlite
- 25. NHibernate IStatelessSession und Viele-zu-Viele-Beziehungen
- 26. Laravel, Abfrage durch viele-zu-viele Beziehungen
- 27. Symfony2 Widgets für Viele-zu-Viele-Beziehungen
- 28. Viele-zu-viele Beziehungen in ndb
- 29. Laravel viele zu viele Beziehungen synchronisieren(), wo
- 30. EntityFramework automatisch viele-zu-viele-Beziehungen erstellen
Auslöser sind für Wartung schrecklich. Zuerst sollten Sie in Erwägung ziehen, Datenbank-FKS und Kaskadierung zu verwenden ... Auslöser könnten wirklich die letzte Option sein. – armandomiani
Sie müssen Witze machen, nicht wahr? FKs Kaskadierung sind tatsächlich Auslöser! Aber Sie können sie nicht "beim Einfügen" verwenden. Außerdem unterstützt die MyIsam-Engine von MySql keine FKs, z. Was die Wartung betrifft, weiß ich nicht, was das Problem ist, ein DB-Verfahren aufrechtzuerhalten, besonders wenn es ein Trivial ist (und ist wie eine FK-Kaskadierung). –