2009-09-26 17 views

Antwort

3

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.

0

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 ..

1
setzen konnte

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.

0

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.

+0

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

+1

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). –

Verwandte Themen