活到老学到老  

记录遇到问题的点点滴滴。

Yii2 数据库表两个关系或以上的的hasMany

8年前发布  · 1280 次阅读
  yii2  hasMany 

我有以下的表和字段(简化了一下这里)和相关的AR模型

tbl_account
id, plan_id, name

tbl_user
id, name

tbl_plan
id, name

tbl_account_user
id, account_id, user_id, type

该FK的是显而易见的。

基本上...
一个帐户有一个计划。
用户和帐户是多对多的。
一个计划可以属于多个帐户,因此涉及到许多用户。

我想这涉及到一个计划的所有用户,所以我必须设置在规划模型如下关系...

public function getAccounts()
{
   return $this->hasMany(Account::className(), ['plan_id' => 'id']);
}
public function getAccountUsers()
{
    return $this->hasMany(AccountUser::className(), ['account_id' => 'id'])->via('accounts');
}
public function getUsers()
{
    return $this->hasMany(User::className(), ['id' => 'user_id'])->via('accountUsers');
}