我是Yii2的新手,我需要这样做:
我有两张桌子: 表: tbl_user 的字段: user_id,last_company_id
数据: user_id = 29 last_company_id = 49
表: tbl_user_subscriber_company: 的字段: user_id,company_id,current_module
数据: user_id = 29, company_id = 49, current_module ='模块A'
user_id = 29,
company_id = 50,
current_module = 'Module B'
我需要通过调用User模型来获取用户的current_module和last_company_id。 (我工作的公司的要求,他们从用户模型构建一个用户对象,其中包含与数据库相关的所有字段)
所以我想翻译这个mysql查询:
select current_module
from tbl_user a
RIGHT JOIN tbl_user_subscriber_company b
ON a.user_id = b.user_id
AND a.last_company_id = b.company_id
where a.last_company_id = 49
and a.user_id = 29
使用Usel模型中的yii2 ActiveRecord。
我需要一个名为getCurrentmodule的函数,该函数将返回用户所选用户及其last_company_id的当前模块。
希望我有意义,对我来说有点难以解释。
答案 0 :(得分:1)
我不确定,但你可以试试像,
例如:
User::find()
->joinwith('tbl_user_subscriber_company',true,'RIGHT JOIN')
->select(['current_module'])
->where(['user_id' => tbl_user_subscriber_company.user_id])
->andWhere(['last_company_id' => tbl_user_subscriber_company.company_id])
->andWhere(['last_company_id' => 49])
->andWhere(['user_id' => 29])
->all();
或强>
$data = (new \yii\db\Query())
->select('current_module')
->from('tbl_user user')
->rightJoin('tbl_user_subscriber_company usc','user.user_id = user_id')
->where('user.last_company_id = usc.company_id')
->andWhere('user.last_company_id = 49')
->andWhere('user.user_id = 29')
->all();