2016-08-17 137 views
0

我搜索了很多,但找不到任何答案,所以我希望你能幫助我!Laravel - 雄辯:從用戶帖子中獲取帖子

我有三個表格:帖子,用戶和post_users。 Post_users包含兩列:user_id和post_id。

我需要用戶通過Eloquent獲取所有帖子。 任何想法?

非常感謝!

(我很抱歉,如果已經存在這個問題,但我沒有找到它)

+0

你已經建立的關係? –

+0

設置關係像'belongsTo'和'hasMany',你會發現它很微妙 – Loek

+0

不,我沒有。我應該設置哪些關係和哪個模型?謝謝! –

回答

1

型號User

public function posts() 
{ 
    return $this->belongsToMany('App\Post', 'post_users', 'user_id', 'post_id'); 
} 

Post型號:

public function users() 
{ 
    return $this->belongsToMany('App\User', 'post_users', 'post_id', 'user_id'); 
} 

嘗試:

$user = User::find($id); 
$allpost = $user->posts()->get(); 
var_dump($allpost); 
+0

它的工作原理!謝謝! –

+0

不客氣。這是多對多的關係,但在你的問題中,你應該使用一對多的關係。 – mydo47

1

如果您有DONOT建立關係,試試這個。但建立關係是首選。郵政用戶和郵政假設爲發佈後用戶和發佈表的模型,並作爲發佈表的列發佈。這給出登錄用戶的帖子,但未經測試。

$postusers=PostUsers::where(['user_id'=>Auth::user()->id])->get(); 
foreach($postusers as $postuser) 
{ 
     $posts=Posts::where(['post_id'=>$postuser->post_id)]->get(); 
     foreach($posts as $post) 
     { 
      print_r($post->post); 
     } 
} 
+0

謝謝,但我正在尋找關係方式 –

0

Laravel的文檔涵蓋了這個相當不錯,但我第一次啓動時遇到了問題。檢查出Laravel Relationships完全寫出來。

// Inside your Post model 
public function user() { 
    return $this->belongsTo('App\User'); 
} 

// Inside your User model 
public function posts() { 
    return $this->hasMany('App\Posts'); 
} 

然後,您可以創建一個查詢:

$posts = User::find(1)->posts; 

或者你可以過濾它進一步..

$posts = User::find(1)->posts()->where('active', 1)->get(); 

您可能需要更改hasMany()belongsTo()如果你的路你模型位置和名稱是不同的。

1

如你所願。用戶與郵政的關係是多到許多

- 定義關係

// In User model 
public function posts(){ 
    return $this->belongsToMany(Post::class); 
} 
// In Post model 
public function users(){ 
    return $this->belongsToMany(User::class); 
} 

- 表結構

- users 
    id 
- posts 
    id 
- post_user 
    user_id 
    post_id 

- 用戶獲取所有職位

$posts = User::find($user_id)->posts 
+0

我創建了post_users,因爲許多用戶可以編輯帖子。所以,用戶可以有很多帖子,帖子可以有很多用戶 –

+0

編輯。照顧名字約定 – KmasterYC

1

嘗試此

從控制器:

dd(Auth::user()->posts); 

應用/用戶

public function posts() 
    { 
     return $this->belongsToMany('App\Entities\posts', 'post_users', 'user_id', 'post_id'); 
    }