2016-10-31 71 views
0

我在YII2框架上下面的查詢轉換模型ArrayHelper ::指定者()Yii2

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

在這裏工作的對象是我的代碼

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

編輯:結果集不包括DP專欄爲什麼是這樣,我該怎麼做。

編輯2:同時告知結果穿上OT包括DP coulmn我錯過了我用的是ArrayHelper::toArray()到模型對象轉換爲一個數組,然後一個重要的信息循環訪問它

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

回答

0

的實際的問題是不是我想這是,該查詢是好的,我用ArrayHelper::toArray($modelTeam)方法將模型對象轉換爲一個數組來進一步迭代陣列之上,並顯示所有記錄,並且問題在哪裏,我需要使用ArrayHelper::toArray()的第二個參數。第二個參數轉換每類映射,因爲它顯示模型的public properties問題和DP聲明publicTeams 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

要在使用Yii2進行選擇時使用IFNULL,您必須創建一個新表達式。

$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

內嘗試它已經和它仍然沒有顯示DP列 –

+0

隨着addSelect並具有新的表達式到數組中?輸出是什麼? –

+0

這裏是完整的代碼 '$ modelTeam =團隊::發現() - > 選擇( [ 'T.id', 'T.name', 'T.status'] ) - > addSelect([ ('{{%teams}} T') - > all(y)\ db \ Expression('IFNULL(T.image,\'no-image.png \')AS DP')]) - > ); 的print_r(ArrayHelper ::指定者($ modelTeam));' 輸出 '陣列 ( [0] =>數組 ( [ID] => 1 [名稱] =>盜 [狀態] =>活躍的 ) ) ' –