首页 文章

Yii2和ActiveRecord如何在查询中获取关系

提问于
浏览
0

我是Yii2的新手,我需要这样做:

我有两个表: Table: tbl_user Fields: user_id,last_company_id

Data: user_id = 29 last_company_id = 49

Table: tbl_user_subscriber_company: Fields: user_id,company_id,current_module

Data: user_id = 29,company_id = 49,current_module = '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 .

希望我有意义,有点难以解释 .

1 回答

  • 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();
    

    OR

    $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();
    

相关问题