如何使用yii2显示用户在下拉列表中的特定角色?

时间:2015-06-23 15:37:09

标签: php yii2 yii-components

这是我的观点

'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表示用户是推广者。

我想要什么? 我想使用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';

1 个答案:

答案 0 :(得分: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(),

如果您有useruser_type之间的关系,则可以使用joinWith来代替您处理连接类型和连接条件:

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