Мои упрощенные отношения модели:
User (id, email) → Timeline (id, user_id) → Activity (id, timeline_id) → Trackpoint(id, activity_id)
Q1: Как получить Трекпоинты для определенного c пользователя и диапазона дат?
Q2: Как получить Временную шкалу для определенной Трекпоинта ?
В настоящее время я использую запрос БД для Q1, но надеялся, что был более ... Красноречивый способ.
$trackpoints = DB::table('trackpoints')
->join('activities', 'activities.id', '=', 'trackpoints.activity_id')
->join('timelines', 'timelines.id', '=', 'activities.timeline_id')
->where('timelines.user_id', 1)
->whereBetween('trackpoints.timestamp',['2019-12-13','2019-12-16'])
Или это требует, например, https://github.com/staudenmeir/belongs-to-through?