2个表与链接表之间的关系

时间:2017-05-02 15:57:47

标签: laravel orm relational-database laravel-5.4

我有这张表:

topics
-------
id    |   title
------+----------
1     |   Sport
2     |   Social

posts_topics
------------
id    |   post_id    |   topic_id
------+--------------+------------
1     |    1         |     1
2     |    1         |     2

posts
------
id   |   title
-----+----------
1    |   A Test Post

我将主题存储在topics表格中,并使用posts_topics链接我的posts表格和topics

现在我想在选择帖子时选择title主题,

在StackOverflow和Google中进行了一些搜索后,我写了这个模型:

Posts.php

public function post_topics()
    {
        return $this->hasMany('App\PostTopics');
    }

PostTopics.php

public function topics()
    {
        return $this->hasManyThrough('App\Posts', 'App\Topics', 'id', 'topic_id');

    }

Topics.php

protected $table = 'topics';

在我的控制器中我试图获取:

$post = Posts::with('post_topics')->find($post_id);
dd($post);

现在这段代码可以使用,但无法返回主题标题。

1 个答案:

答案 0 :(得分:1)

在Posts.php中将代码更改为多对多关系:

public function post_topics()
{
    return $this->belongsToMany('App\Topics', 'posts_topics', 'post_id', 'topic_id');
}

然后叫它:

$post = Posts::with('post_topics')->find($post_id);

试试这个并检查它是否适合你。