[英]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.