JOIN mehrere Tabelle mit Beziehungen in Yii2

8

Ich versuche, einige Daten über Kartik GridView widget in yii2 mithilfe von Relationen aufzulisten. Ich habe diese Tabellen

%Vor%

designations Tabelle ist verwandt mit designation_group by designations.designation_group_id . designations table hat einen oder mehrere Werte, die durch Kommas von designation_group.id getrennt sind.

Die Tabelle

designations bezieht sich auf die Tabelle staffs nach staffs.designation_id =designations.id . In Staffs Model habe ich solche Relationen hinzugefügt.

%Vor%

und funktioniert perfekt. Aber die Beziehung für designation_group habe ich so versucht:

%Vor%

Aber es gibt nicht das erwartete Ergebnis. Wie kann die Tabelle designation_group zusammengefügt werden, so dass auch alle den Mitarbeitern zugeordneten Bezeichnungsgruppen angezeigt werden können? Ich möchte zeigen, wie, die erste Spalte der Grid-Ansicht werden Bezeichnungen sein, während der Filter der gleichen Spalte DesignationGroup.group_name sein sollte. SO wenn ein Gruppenname ausgewählt ist, werden die Daten der Mitarbeiter angezeigt, die diesem Gruppennamen zugeordnet sind

    
user7282 25.02.2016, 06:26
quelle

4 Antworten

2

Nun, nach dem, was ich in der Lage war, aus Ihrer Frage zu extrahieren, möchten Sie in der Lage sein, den Gruppennamen für jeden der Mitarbeiter zu erhalten. Der folgende Code hilft Ihnen dabei, diese Aufgabe zu erfüllen.

Im Mitarbeitermodell erstellen Sie eine Beziehung wie unten angegeben oder Sie können eine bestehende Beziehung verwenden, von der ich sicher bin, dass Yii sie automatisch für Sie erstellt hat

STAFF-Modell

%Vor%

Erstellen Sie im Bezeichnungsmodell eine weitere Relation, die das Deginierungsmodell mit dem designationGroup-Modell verknüpft, das ebenfalls automatisch erstellt wurde

Bezeichnung MOdel

%Vor%

Schließlich können Sie in Ihrer Gridview den folgenden Code verwenden, um den Gruppennamen

zu erhalten %Vor%

Ich hoffe, das löst dein Problem. Obwohl ich es einige Male benutzt habe.

    
Oyedele Femi 26.02.2016 11:45
quelle
0

Wenn ich Sie verstehe, sieht es vor ein paar Tagen wie mein Problem aus. überprüfen Sie dies

Ich habe drei Tabellen (contact, contact_groups und contact_contact_groups), die eine Viele-zu-Viele-Beziehung haben. Es bedeutet, dass ein Kontakt viele Gruppen hat und eine Gruppe viele Kontakte hat. Also erstelle ich eine Tabelle, um die Beziehungen Eins-zu-Viele herzustellen.

aber das Ergebnis wird so aussehen:

%Vor%     
Hendra SYP 02.03.2016 03:07
quelle
0

Mitarbeitermodell

  

verwende ->with(['designationgroup'])

%Vor%

Bezeichnungsmodell

%Vor%

Bei GridView rendern Sie den Wert als

%Vor%

Ich hoffe, es hilft.

    
BeginnerDev 23.03.2018 11:32
quelle
-1

Ich empfehle Ihnen, die Spalte designation_group_id aus der Benennungstabelle zu entfernen, da sie mehrere durch Kommas getrennte Werte enthält. Erstellen Sie eine weitere Tabelle mit dem Namen designation_group_assigned, die folgende Spalten enthält: Id , designation_id , designation_group_id

In dieser Tabelle können wir mehrere Zeilen einfügen, wenn eine Bezeichnung zu mehreren Gruppen gehört.

Und dann können Sie die yii-Beziehungen für einen bis viele Datensätze verwenden.

    
rahul 25.02.2016 08:06
quelle

Tags und Links