我有這樣的情況。有authors
和books
。 books
屬於authors
和authors
有很多books
。 還有另一個表publish_year
,不同的年份有primary keys
反對他們。即2005年具有主鍵1 2006年一年有主鍵2等在Laravel的每個渴望加載的元素上使用Eloquent作用域
現在,書本上的表中,year_id
是指publish_year
表的primary key
的foreign key
。現在我想要加載所有的authors
和他們的books
一個特定的年份(這是從管理面板激活)。
我開發了以下雄辯的查詢。型號爲Author
,Book
和PublishYear
。在query
上執行一些額外的where
條件。
return Author::with(['books' => function($query) {
$query->where('year_id', '=', PublishYear::where('is_active', '=', 1)->pluck('id'))
->where('is_available', '=', 't')
....;
}])->get();
它的工作原理。現在有沒有辦法使用範圍的查詢中是這樣的:
return Author::with(['books' => function($query) {
$query->scope();
}
所以,我可以抽象掉來自控制器的實現細節。