@pkabore using whereHas (assuming (i) you have relations between Lesson and Chapter and Course and (ii) each model has a slug column not model_slug):
public function showLesson($course, $chapter, $lesson)
{
return Lesson::where('slug', $lesson)
->whereHas('chapter', function ($chapterBuilder) use ($course, $chapter) {
$chapterBuilder->where('slug', $chapter)
->whereHas('course', fn ($courseBuilder) => $courseBuilder->where('slug', $course);
})->first();
}
Or using joins:
public function showLesson($course, $chapter, $lesson)
{
return Lesson::where('slug', $lesson)
->join('chapters', function ($join) use ($chapter) {
$join->on('chapters.id', 'lessons.chapter_id')->where('chapters.slug', $chapter);
->join('courses', function ($join) use ($course) {
$join->on('courses.id', 'chapters.course_id')->where('courses.slug', $chapter);
})->first();
}