2015-06-23 79 views
0

這是我的看法

'promoter_id' => [ 
    'type' => Form::INPUT_DROPDOWN_LIST, 
    'options' => ['prompt' => '--'.Yii::t ('app', 'Ventor Type').'--',], 
    'items' => ArrayHelper::map (
     User::find()->orderBy ('username')->where(['user_type_id' => [13]])->asArray()->all(), 
     'id', 
     'username' 
    ) 
] 

我幹了什麼? 顯示過濾user_type_id = 13的用戶。 user_type_id=13表示用戶是發起人。如何使用yii2顯示用戶在下拉菜單中的特定角色?

我想要什麼? 我想使用ArrayHelper::map來顯示像下面的sql查詢那樣的用戶。

SELECT u.username 
    FROM tbl_user u,tbl_user_type t 
    where u.user_type_id = t.id and t.type='promoter'; 
+0

你使用了哪個數據庫? – topher

+0

@topher ** mysql ** – mvm

回答

1

既然你正在使用MySQL,你可以簡單地使用innerJoin

User::find() 
    ->select(['user.id', 'user.username']) 
    ->innerJoin('user_type', 'user_type.id = user.id') 
    ->where(['user_type.type' => 'promoter']) 
    ->orderBy('username') 
    ->asArray() 
    ->all(), 

如果你有user之間的關係user_type你可以使用joinWith相反,它處理的連接類型和連接條件對你來說:

User::find() 
    ->select(['user.id', 'user.username']) 
    ->joinWith('userType', true) 
    ->where(['userType.type' => 'promoter']) 
    ->orderBy('username') 
    ->asArray() 
    ->all(), 
+0

其工作正常。謝謝你:) – mvm

相關問題