簡體   English   中英

Laravel從數據庫中的集合中選擇-Laravel Nova

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

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