Как я могу запросить значение сводной таблицы с помощью Query Builder? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть две модели и сводная таблица:

Teacher Class

Сводная таблица class_teacher.Я выполняю динамический запрос, в котором я могу получить массив идентификаторов классов и хочу узнать, какие учителя им назначены.

В классе может быть много учителей, а учитель может быть во многих классах.

Каков наилучший способ запроса этого с помощью построителя запросов?

До сих пор я выполнял код с использованием модификатора whereHas для извлечения взаимосвязи, а затем использовал whereIn, чтобы увидеть, соответствуют ли значенияприсутствуют.Ниже приведен пример кода:

return $builder->whereHas('classes', function ($query) use ($value) {
            $query->whereIn('class_teacher.class_id', $value);
        });

Это не вызывает ошибок, но не возвращает результатов, когда некоторые должны появиться.

Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете определить свои отношения в модели, и тогда вам не нужно будет использовать построитель запросов для этого простого случая.

Например, в вашей Class модели добавьте:

public function teachers()
{
    return $this->belongsToMany(Teacher::class);
}

Тогда вы можете просто позвонить:

// $values should be an array of class ids
$classes = Class::whereIn('id', $values)->with('teachers')->get();

Повторение каждого класса даст вам коллекцию учителей, назначенную этому классу. Другое дело, что Class - зарезервированное слово в PHP, поэтому я не уверен, что вы можете использовать его таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...