大量获取相关项目

时间:2018-11-05 20:19:05

标签: php yii2

我有模特儿帖子和标签。和多对多的关系。

帖子:

public function getTags()
{
    return $this->hasMany(Tag::className(), ['id' => 'tag_id'])
        ->viaTable('post_tag', ['post_id' => 'id']);
}

标签:

public function getPosts()
{
    return $this->hasMany(Post::className(), ['id' => 'post_id'])
        ->viaTable('post_tag', ['post_id' => 'id']);
}

和表格后标记:

但是当我尝试发布标签时:

 $tags = $post->tags;

我得到一个空变量;

-------------------------
|    Post-tag table:    |
-------------------------
| id | post_id | tag_id |
-------------------------
| 8  |   2     |   1    |
-------------------------

2 个答案:

答案 0 :(得分:0)

确保在调用关系的Catch中已将相关标签保存在post_tag表中。

此外,您还必须更正post模型内部的关系,在调用Tags时需要指定'tag_id'=>'id'而不是'post_id'=>'id'

viaTable()

答案 1 :(得分:-1)

帖子:

public function getTags() {
    return $this->hasMany ( Tag::className (), [ 
            'post_id' => 'post_id' 
    ] )
}

标签:

实际上不需要;

public function getPosts() {
    return $this->hasMany ( Post::className (), [ 
            'post_id' => 'post_id' 
    ] )
}

$tags = $post->tags;现在会给您一个对象!