如何在yii2中访问连接表的属性

时间:2018-03-27 06:50:45

标签: join yii2 yii2-basic-app

我在控制器中连接了两个模型(User,ReferralsForm)。连接工作正常但我在访问ReferralsForm中的属性时遇到问题。这是我的控制器中的代码:

public function actionReferrals()
{
    $idOfCurrentUser = Yii::$app->user->identity->id;
    $query = User::find()->joinWith('referrals')->where(['userid' => $idOfCurrentUser])->all();

    $model = new User();
    $ref_hash = $model->getHash();

    return $this->render('referrals' ,['query' => $query, 'ref_hash' => $ref_hash]);
}

我的观点:

        (...)
        <table class="table table-hover">
          <tbody><tr>
            <th>#</th>
            <th>Referred Username</th>
            <th>Status</th>
          </tr>
          <tr>
              <?php foreach ($query as $result){ ?>
            <td><?php echo $result->user_id?></td>
            <td><?php echo $result->display_name?></td>
            <td><?php echo $result->status?></td>
              <?php } ?>
          </tr>
          </tbody>
        </table>
        (...)

这是我得到的错误:

Getting unknown property: app\models\User::status

我想从ReferrasForm访问status但是它不包含来自ReferralsForm的属性,只包含来自用户的属性,即使我已经加入了它们并添加all()类似的问题我读取。

2 个答案:

答案 0 :(得分:2)

使用relationName->attributeName

 <td> <?= $result->referrals->status ?> </td>

如果您有hasMany()关系,则需要循环浏览$result->referrals或使用$result->referrals[0]->status

答案 1 :(得分:-1)

我认为你必须使用hasMany关系。 在你的模型中:

public function getReferrals(){
        return $this->hasMany(nameTable::className(), ['author_id' => 'id']);
    }

在你的控制器中

$result->referrals->status

访问您的状态值。 注:你必须正确地实现与数据的关系。