on_click
@on_click

Почему lighthouse не возвращает данные с таким условием в модели?

Здравствуйте!
Есть 3 модели: Course, Section, Lesson
Они последовательно "вложены" друг в друга, и связаны через ->hasMany

CourseModel
public function sections() {
    return $this->hasMany(Section::class);
}

SectionModel
public function lessons() {
    $current_id = $this->getKey('course_id');
    return $this->hasMany(Lesson::class, 'section_id', 'section_id')->where('course_id', $current_id);
}


При вот таком запросе из контроллера данные возвращаются как ожидается (запрашиваю course, в нем получаю section, и из нее уже получаю список lesson)
$course = Course::find(1);
$sections = $course->sections;
foreach($sections as $section) {
    $lessons = $section->lessons->toArray();
    dump($lessons);
}

5fe44dbb636c6952267773.jpeg

Проблема с lighthouse graphql, если я не ограничиваю выборку в модели section этим куском
->where('course_id', $current_id) запрос отрабатывает, но очевидно, возвращает лишнее
а с ним, в список lesson не попадает ничего, есть ли возможность это как то пофиксить не прибегая к кастомной query? Спасибо!

5fe450d3e3dc6267790986.png
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
on_click
@on_click Автор вопроса
Нашел библиотеку, полностью справляется с моей задачей - https://github.com/topclaudy/compoships

Там же нашел ответ на свой вопрос:
Trying to use where clauses (like in the example below) won't work when eager loading the relationship because at the time the relationship is processed $this->team_id is null.

Возможно, все же кто-то знает альтернативное решение (без использования библиотек)?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы