Получить данные из таблицы отношений (with ()) с условием - PullRequest
0 голосов
/ 21 января 2019

У меня есть таблица «реализации», которая содержит отношения для извлечения projects и scores.

. Таблица scores содержит поле «user_id».

Я хотел бысобрать все реализации, но только с score, который содержит user_id.

Мой исходный запрос.

public function getImplementations($id, $student)
{
    $data = Implementation::where('event_id', $id)->where('student_id', $student)->with('project', 'score')->get();

    return response()->json($data);
}

Мой тест для получения только оценки от конкретного пользователя (только одна оценкана пользователя на реализацию, поэтому конфликт невозможен)

$data = Implementation::where('event_id', $id)
           ->where('student_id', $student)->with('project', 'score')
           ->whereHas('score', function ($query) {
            $query->where('user_id', Auth::user()->id);
        })->get();

Но это не дает ожидаемого результата.Это не правильный метод, и я не знаю правильный.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 21 января 2019

Я не уверен, есть ли необходимость загружать и ограничивать отношения одновременно. Предоставляет ли следующее ожидаемый результат?

$data = Implementation::where('event_id', $id)
    ->with([
        'project',
        'score' => function ($query) {
            $query->where('user_id', Auth::id());
        }
    ])
    ->where('student_id', $student)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...