又名 Yii2 viaTable 的使用
有一个文章表,可能会属于多个用户,于是设计了以下三个表: user(用户表)、article(文章表)、user_ref_article(用户关联文章表);
以下分别列出三个表的主要字段 :
user
| id | username |
| -------- | -------- |
| 1 | forecho |
| 2 | echo |
article
| id | title | content |
| -------- | -------- | -------- |
| 1 | 标题 | 内容 |
user_ref_article
| id | user_id | article_id |
| -------- | -------- | -------- |
| 1 | 1 | 1 |
| 2 | 2 | 1 |
在 User Model 里面添加以下代码:
/**
* @return \yii\db\ActiveQuery
*/
public function getArticle()
{
return $this->hasMany(Article::className(), ['id' => 'article_id'])
->viaTable(UserRefArticle::tableName(), ['user_id' => 'id']);
}
控制器使用:
$user = User::findOne(['id' => $id]);
$user->article;
PS: 结果待测试,提供的是思路。
本文由 forecho 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。
如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。