Yii Framework 2.0 GridView und Daten aus der join-Tabelle
Habe ich zwei Datenbank-Tabellen 'user' und 'Rolle'. Ich verwendet Yii framework 2.0 Gii zu erstellen CRUD-mit dem Benutzer-Modell und UserSearch Modell. Standardmäßig Gii verwendet GridView::widget für die index-Seite der "user" - Modell.
In der Suche($params) - Methode innerhalb der UserSearch Modell habe ich den folgenden code, um die join über Tabellen zusammen
$query = User::find()->with('role');
Alles funktioniert mit der Abfrage.
Standardmäßig Gii umfasst nicht die Daten aus der verknüpften Tabelle 'Rolle' in der GridView::widget innerhalb des views/user/index.php Seite. Mit der join-Abfrage über konnte ich wieder Daten aus beiden Tabellen. In der views/user/index.php Seite ich habe injiziert, die GridView::widget mit dem folgenden code, so dass es auch die Daten enthält und Spalte die Namen aus der verbundenen Tabelle (Rolle).
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'userid',
'username',
'role.role_name',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
Funktioniert alles einwandfrei mit den Daten der Rolle 'role_name enthalten in der GridView -:: - widget. Aber das problem ist, dass es kein Suchfeld für die role_name. Die GridView::widget erstellt Suchfeld für die Benutzer-Eigenschaften nur. Gibt es eine Möglichkeit, add-Suchfeld für die Eigenschaften der verknüpften Tabelle 'Rolle', weil ich auch möchte, Suche durch 'role_name' als auch durch andere Eigenschaften des User-Modell.
Ich habe gelesen, dass Dokumentation. Ich weiß, wie ich hinzufügen benutzerdefinierter Spalten zu den detault Gridview-widget, benutzerdefinierte Spalten der verknüpften Tabelle zum Beispiel. Aber das problem ist, dass es kein Suchfeld für den benutzerdefinierten Spalten. Die Standard-Spalten in der Gridview haben Sie die Suche-box auf den header.
haben Sie versucht zu zeigen, nur eine einzige Spalte (role_name)
Ja, habe ich und die Spalte 'role_name' ist auch Hinzugefügt, um die Gridview. Aber es gibt kein Suchfeld auf der Oberseite der Spalte.
Connor Hinzugefügt, die yii2-filter-Antwort.Hoffentlich wird es dir helfen.
InformationsquelleAutor O Connor | 2014-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem Weg versuchen:
In Ihrem UserSearch Modell hinzufügen
in Ihrem raster:
in UserSearch::search()
Aber ich denke, du wirst 'joinWith' statt 'mit'.
InformationsquelleAutor Ekonoval
Innen CGridView fügen Sie folgenden code. Sie ermöglicht es, filter mit dropDownList.
CGridView code-Snippet wie folgt:
InformationsquelleAutor rajesh ujade
Versuchen Sie es mit
Ich habe nur versucht, es in meinem code, also ich bin mir nicht sicher, ob dies funktioniert auch mit deinem code. Aber wenn es so ist, ich weiß nicht, warum es auf diese Weise definiert.
Ich denke, die Antwort von rajesh ujade enthält auch diese definition jedoch für Yii 1.
InformationsquelleAutor robsch
Dieser arbeitete für mich
Tabelle = Blei (id , year_id)
Tabelle = Jahr (id, text)
Hinzugefügten text in Blei (index.php)
Jahr::find()->alle() = Dieser code ziehen alle den Wert aus Tabelle/alle Jahre.
Zudem zeigt es dropdown-als auch die Sortierung.
Bild Zeigt Dropdown in Grdiview
InformationsquelleAutor Vikram
@Ekonoval wird in der rechten Weise.
Fügen Sie einfach Folgendes in fast Funktion der UserSearch:
Nach der Initialisierung ActiveDataProvider Objekt wie folgt:
InformationsquelleAutor Shahrukhkhan Pathan
Schreiben Sie die Abfrage in Ihre UserSearch Modell wie
InformationsquelleAutor Kalpesh Desai