2015-06-23 4 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?

Что я хочу? Я хочу показать пользователям, как ниже sql-запрос, с помощью ArrayHelper::map.

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