0

我有一个数据库,“视图”,有很多很多条目。我还有一个“课程”表,这些视图与该表是一对多相关的。在 Laravel Nova 中,我可以使用如下代码获取课程的所有视图随时间变化的指标:

public function calculate(Request $request)
{
    return $this->countByDays($request, view::where('viewable_id', $request->resourceId));
}

在这种情况下,viewable_id是课程$request->resourceId的 ID,并给出要排序的课程 ID。很简单。

然而,现在事情变得有些困难。我有另一个模型叫做Teachers. 每个都Teacher可以有很多课程,也是一对多的关系。我如何获得教师教授的所有课程的观看次数指标?

我假设最简单的方法是创建一个 Laravel 集合,其中包含教师教授的所有课程(效率不高),然后选择数据库中viewable_id与该列表中的一门课程匹配的所有视图。当然,通过发布这个,我无法弄清楚如何做到这一点。

当然,一旦弄清楚了这一点,我很乐意为它做同样的事情Categories(尽管它的功能应该与教师非常相似,所以我不需要问这个问题)。

4

1 回答 1

2

我如何获得教师教授的所有课程的观看次数指标?

这应该是 viewable_id 位于教师教授的课程 ID 列表中的视图的“countByDays”。

下面给出了实现该目标的 SQL 查询语句:

select * from "views" 
where "viewable_id" in (select "id" from "courses" where "teacher_id" = ?)

Eloquent 查询应该类似于:

$this->countByDays($request,
  view::whereIn(
    'viewable_id',
     Course::with('teacher')
             ->select('id')
             ->where('teacher_id', $request->resourceId)
  )
);
于 2018-11-09T05:04:06.580 回答