Ich versuche, einige Daten über Kartik GridView
widget in yii2
mithilfe von Relationen aufzulisten.
Ich habe diese Tabellen
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.
designations
bezieht sich auf die Tabelle staffs nach staffs.designation_id =designations.id
.
In Staffs
Model habe ich solche Relationen hinzugefügt.
und funktioniert perfekt. Aber die Beziehung für designation_group
habe ich so versucht:
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
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.
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%Mitarbeitermodell
%Vor%verwende
->with(['designationgroup'])
Bezeichnungsmodell
%Vor% Bei GridView
rendern Sie den Wert als
Ich hoffe, es hilft.
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.
Tags und Links php yii2 yii2-model