Laravel Объяснение левого соединения запроса - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть следующие таблицы:

Пользователи, Исследования, Study_User и Вопросы. Отношения:

Многие ко многим между пользователями и исследованиями через study_user.

Исследования вопросы один ко многим

Может кто-нибудь, пожалуйста, объясните мне, что это делает запрос сделать? Приносит ли он все Вопросы, относящиеся к исследованиям, частью которых является определенный пользователь?

public function 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;
}

Эта функция затем называется

$user = Auth::user();
$user->questions()->get();

Хорошо, и теперь другой вопрос будет :

Предположим, что мы добавили еще одну таблицу под названием Модули, в которой: изучаются модули один ко многим, а затем модули вопросы один ко многим. Так что мы нарушаем прямую связь между исследованиями и вопросами. Как запрос должен измениться, чтобы получить те же результаты?

...