Yii2 : Aktive Datensatz Spalte Aliase
Ich bin mit framework Yii2 mit erweiterten Vorlage.
Bekomme ich problem mit den Spalten-alias in meine controller-Datei, hier ist mein code:
$models = new ActiveDataProvider([
'query' => User::find()->select(['member'=>'fullname'])
]);
Obige Abfrage äquivalent mit:
SELECT fullname AS member FROM User;
Schicke ich die Daten zu der Ansicht, mit diesem code:
return $this->render('view', [
'model' => $models,
]);
Möchte ich nennen, die Daten aus meiner Sicht mit GridView-widget, hier ist mein code:
echo GridView::widget([
'dataProvider' => $model,
'columns' => [
'member',
],
]);
Allerdings bekam ich eine Fehlermeldung, die mir sagen, die "Mitglied" - parameter ist nicht definiert.
Wie kann ich die Daten aus meiner Abfrage durch den Aufruf der Namen der Spalte? (in meinem Fall mit alias)
Ich bin wirklich dankbar für jede Art von hilft!!
InformationsquelleAutor Wonka | 2015-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie einfach erklären, dieses Attribut in Ihr Modell :
Lesen Sie mehr : https://www.yiiframework.com/doc/guide/2.0/en/db-active-record#selecting-extra-fields
es müssen richtige Erklärung, um den Menschen helfen, in Zukunft
InformationsquelleAutor soju
ActiveDataProvider funktioniert nur mit den Modell-Parametern.
member
ist natürlich nicht so vorgestellt.Zuerst von allen, ist es vielleicht besser umgestalten, Spaltennamen, um deutlicher zu sein statt zu schreiben Aliase? Ich sehe keinen Vorteil in deinem Beispiel.
Wenn Sie trotzdem müssen Aliase verwendet werden, als alternative für das hinzufügen von zusätzlichen Eigenschaften der Klasse, die Sie mit Ihnen arbeiten können mit Hilfe von ArrayDataProvider und SqlDataProvider.
Beispiele:
ArrayDataProvider:
SqlDataProvider:
Weitere details und features, die die Nutzung finden Sie offizielle Dokumente.
Für Ihren Fall ist es besser
ArrayDataProvider
,SqlDataProvider
ist für komplexere Abfragen.Im Falle eines alias und mittels Modell-Methoden hinzufügen zusätzlicher attribute, wie vorgeschlagen, durch soju kann besser werden.
Aber meiner Meinung nach ist es nutzlos und es ist besser, zu überarbeiten Spaltennamen in manchen Fällen von Mehrdeutigkeit.
Sie besser erwähnen, diese Angaben in Frage. Mit
SqlDataProvider
können dann besser.InformationsquelleAutor arogachev