關係

2017-05-02 40 views
1

我有這個表:關係

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_topicsposts表和topics

之間的鏈接現在我想選擇的title選擇帖子時的主題,

經過在StackOverflow和谷歌搜索後,我寫了這個模型:

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); 

現在,此代碼將工作,但不能返回標題的主題。

+0

你有一個多對多的關係,'posts_topics'作爲數據透視表。你可以在這裏閱讀:https://laravel.com/docs/5.4/eloquent-relationships#many-to-many – patricus

回答

0

更改代碼到一個多對多的關係在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); 

試試這個,檢查它是否適合你。