2016-10-31 3 views
0

ich auf die folgende Abfrage in YII2 Rahmen arbeiteKonvertieren Modellobjekte mit ArrayHelper :: toArray() Yii2

SELECT T.id, T.name,T.status, IFNULL(T.image,'no-image.png') as DP FROM TABLE_NAME T 

hier ist mein Code

$modelTeam = Teams::find()-> 
       select(
         ['T.id','T.name','T.status','IFNULL(T.image,"no-image.png") as DP'] 
         ) 
       ->from('{{%teams}} T')->all() 

Edit: die Ergebnismenge nicht enthalten DP-Spalte überhaupt warum ist das so, und wie kann ich das tun.

Edit 2: während sagen, dass die Ergebnisse der DP coulmn umfassen don ot i eine wichtige Information verpasst, dass ich die ArrayHelper::toArray() Verwendung wurde das Modellobjekt in ein Array zu konvertieren und dann iterieren es

$results=ArrayHelper::toArray($modelTeam); 

Antwort

0

Das eigentliche Problem ist nicht, wo ich dachte, es ist, die Abfrage in Ordnung ist, verwendet i ArrayHelper::toArray($modelTeam) Methode des Modell Objekt in ein Array zu konvertieren über die Anordnung weiter zu durchlaufen und alle Datensätze angezeigt werden, und dass Wo das Problem liegt, musste ich den zweiten Parameter für die ArrayHelper::toArray() verwenden. Das zweite Argument konvertiert Mapping pro Klasse, da es Probleme mit der Anzeige der public properties eines Modells hat und die DP erklärt public innerhalb des Teams Model

$modelTeam= Teams::find()-> 
       select(
         ['TM.id','TM.name','TM.status'] 
         ) 
       ->addSelect([new \yii\db\Expression('IFNULL(TM.image,\'no-image.png\') AS DP')]) 
       ->from('{{%teams}} TM')->all(); 

$results=ArrayHelper::toArray($modelTeam,[ 
        'common\models\Teams'=>[ 
         'id', 
         'name', 
         'status', 
         'DP' 
        ] 
       ]) 
0

zu Verwenden Sie IFNULL in einer Auswahl mit Yii2 müssen Sie einen neuen Ausdruck erstellen.

$modelTeam = Teams::find() 
    ->select(['T.id', 'T.name', 'T.status']) 
    ->addSelect([new Expression('IFNULL(T.image,"no-image.png") as DP')]) 
    ->from('{{%teams}} T') 
    ->all() 
+0

versuchte es bereits und es zeigt immer noch nicht die DP Spalte –

+0

Mit addSelect und mit der neue Ausdruck in ein Array? Was ist die Ausgabe? –

+0

hier ist vollständigen Code '$ modelTeam = Teams :: find() -> select ( [ 'T.id', 'T.name', 'T.status'] ) -> addSelect ([ new \ yii \ db \ Ausdruck ('IFNULL (T.image, \' no-image.png \ ') AS DP')]) -> von ('{{% teams}} T') -> all (); print_r (ArrayHelper :: toArray ($ modelTeam)); ' Ausgänge ' Array ( [0] => Array ( [id] => 1 [name] => Pirates [Status] => aktiv ) ) ' –

Verwandte Themen