У меня есть БД, "просмотры", со многими, многими записями.У меня также есть таблица «Курсы», с которой связаны эти представления.В Laravel Nova я могу получить метрику всех просмотров по времени для курса с таким кодом:
public function calculate(Request $request)
{
return $this->countByDays($request, view::where('viewable_id', $request->resourceId));
}
В этом случае viewable_id
является идентификатором курса, а $request->resourceId
дает идентификатор курса для сортировки.Довольно просто.
Однако теперь все становится немного сложнее.У меня есть другая модель под названием Teachers
.Каждый Teacher
может иметь много курсов, также в отношениях «один-много».Как я могу получить метрику просмотров по времени для всех курсов, которые преподает учитель?
Я предположил, что самый простой способ сделать это - создать коллекцию Laravel со всеми курсами, которые преподает учитель (не совсем эффективный), а затем выберите все представления в базе данных, где viewable_id
соответствует одному из курсов в этом списке.Конечно, публикуя это, я не мог понять, как это сделать.
Конечно, как только это выяснилось, я бы хотел сделать то же самое для Categories
(хотя это должноработают так же, как и учителя, поэтому мне не нужно задавать этот вопрос).