簡體   English   中英

Laravel 4 Eloquent選擇

[英]Laravel 4 Eloquent select

我有3張桌子

---帖子(所有帖子)行= id,標題,內容

---板(所有板)行= id,標題

--- board_post(板和帖子之間的鏈接:很多< - >很多)rows = board_id,post_id

2個雄辯的課程,名為board and post

現在我想根據board_post選擇一塊板上的所有帖子

我想的方式是: Posts::whereIn('id', $board->post_ids())

我怎么能做到這一點,首先,如果我做Board :: find(1) - > post_ids我得到該板的所有帖子ID

那么我怎么能從中得到所有的后期對象呢?

問候格倫

在Board模型中,確保定義belongsToMany關系

public function posts()
{
    return $this->belongsToMany('Post', 'board_post');
}

現在你應該能夠做到這一點:

Board::find({id})->posts

其他閱讀材料: http ://laravel.com/docs/eloquent#relationships

你為什么要使用帖子和板子的多對多關系? 它很可能是一對多關系:一個董事會可能有幾個帖子,但一個帖子應該只屬於一個董事會(這將簡化你的數據庫結構以刪除board_post表)。

然后你會這樣做:

董事會課程內部:

public function posts() {
  return $this->hasMany('Post', 'board_id');
} 

然后,Board :: find(1) - >帖子將獲得該板的所有帖子(使用帖子,而不是帖子())。


要使用當前的數據庫設置,請使用belongsToMany:

public function posts() {
  return $this->belongsToMany('Post', 'board_post');
} 

如果你想加載一個董事會所有的帖子(急切加載)使用這個:

Board::with('posts')->find(1)

否則,只需獲取特定電路板的帖子,請使用:

Board::find(1)->posts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM