![](/img/trans.png)
[英]Laravel Nova How to create a select with options based on other Nova Resouce
[英]Laravel select from DB where in Collection - Laravel Nova
我有一個數據庫,“視圖”,包含很多條目。 我還有一個“課程”表,這些視圖與許多視圖相關。 在Laravel Nova中,我可以使用以下代碼獲取課程在一段時間內所有視圖的度量:
public function calculate(Request $request) { return $this->countByDays($request, view::where('viewable_id', $request->resourceId)); }
在這種情況下, viewable_id
是課程的ID,而$request->resourceId
提供課程的ID進行排序。 很簡單
但是,現在事情變得有些困難了。 我還有另一個模型叫做Teachers
。 每個Teacher
可以一對多的關系參加許多課程。 我如何獲得一段時間內老師教的所有課程的觀看次數指標?
我認為最簡單的方法是創建一個包含教師教的所有課程的Laravel集合(效率不高),然后在viewable_id
與該列表中的課程之一匹配的數據庫中選擇所有視圖。 當然,通過發布此內容,我不知道該怎么做。
當然,一旦解決了這個問題,我就想對Categories
做同樣的事情(盡管它的作用方式與教師完全相同,所以我不需要問這個問題)。
我如何獲得一段時間內老師教的所有課程的觀看次數指標?
這應該是視圖的“ countByDays”,其中viewable_id在教師教的課程ID列表中。
下面給出了一個SQL查詢語句:
select * from "views"
where "viewable_id" in (select "id" from "courses" where "teacher_id" = ?)
雄辯的查詢應類似於:
$this->countByDays($request,
view::whereIn(
'viewable_id',
Course::with('teacher')
->select('id')
->where('teacher_id', $request->resourceId)
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.