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.

yiiframework.com/doc-2.0/yii-grid-gridview.html#$Spalten-detail hier yii2 definiert die Spalte Namen in ein array in der main-Spalte-array. Ich habe nie diese vor. Hoffe, dass dies helfen könnte
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

Schreibe einen Kommentar