'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';
答案 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(),
如果您有user
和user_type
之间的关系,则可以使用joinWith
来代替您处理连接类型和连接条件:
User::find()
->select(['user.id', 'user.username'])
->joinWith('userType', true)
->where(['userType.type' => 'promoter'])
->orderBy('username')
->asArray ()
->all (),