У меня есть следующие таблицы:
- Users
- Studies
- Study_User
- Questions
Отношения:
- Многие ко многим между
Users
и Studies
через study_user
Studies
Один ко многим Questions
, поэтому в каждом исследовании может быть один или несколько вопросов.
И у меня есть следующий запрос:
$builder = Question::groupBy('questions.id');
$builder = $builder
->leftjoin('studies', 'studies.id', '=', 'questions.study_id')
->leftjoin('study_users', 'studies.id', '=', 'study_users.study_id')
->where('study_users.user_id', '=', $this->id)
->where('studies.starts_at', '<=', Carbon::now())
->where('studies.ends_at', '>=', Carbon::now())
->select('questions.*');
return $builder;
Предположим, что мы добавили еще одну таблицу с именем Modules
, где:
Studies
one -ко-многим Modules
, а затем Modules
один-ко-многим Questions
Так что мы нарушаем прямую связь между Studies
и Questions
,
Как запрос должен измениться, чтобы получить те же результаты?