2015-07-03 109 views
0

我在我的應用程序中有三個數據庫表。作爲一個例子,這裏是我現在有:在Laravel中有兩個或多個外鍵的表格

items TABLE: id, quantity, price, month_id (FK), department_id (FK) 
months TABLE: id, month 
department TABLE: id, department 

我已經定義的模型hasManybelongsTo關係。通過這些關係,我可以執行查詢App\Month::first()->items來檢索所有第一個月的項目。但是,如果我想查詢月份和部門,在這種情況下最好的方法是什麼?

我當然可以就這樣做:

$month = App\Month::first(); 
$month->items()->where('department_id', '3')->get(); 

是否有這樣做的查詢更優雅的方式?

+0

試試這個:' month :: with(['items'=> function($ q){$ q-> where('department_id',3)}]) - > first();' –

回答

0

首先,你可以告訴雄辯渴望加載需要的關係,以獲得更好的性能。你可以通過使用和()方法來解決所有需要的關係 - 參見http://laravel.com/docs/5.0/eloquent#eager-loading瞭解更多細節。

而且,如果你想申請上加載關係中的一些附加條件,你可以這樣做,使用相同的方法,但使用不同的語法來定義關係和標準:

$users = User::with(['posts' => function($query) 
{ 
    $query->where('title', 'like', '%first%'); 

}])->get();