【问题标题】:Yii2 and ActiveRecord how to get relations in a queryYii2 和 ActiveRecord 如何在查询中获取关系
【发布时间】:2016-04-05 11:40:55
【问题描述】:

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

我有两张桌子: 表: tbl_user 字段: user_id, last_company_id

数据: 用户 ID = 29 last_company_id = 49

表: tbl_user_subscriber_company: 字段: user_id, company_id, current_module

数据: 用户 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。

希望我说得通,有点难以解释。

【问题讨论】:

标签: activerecord yii2


【解决方案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();

【讨论】:

  • 谢谢@Insane Skull。我说服我的雇主我需要时间来学习 yii,然后才能使用它。将很快尝试您的代码并通知您。
  • @SigalZahavi。好的,慢慢来,一切顺利。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
相关资源
最近更新 更多