Так до недавнего времени это работало, пока я не хотел немного изменить его. У меня есть маршрут
Route::get('/courses/{course}/lessons/{lesson}', 'CourseLessonController@show')->name('frontend.course.lesson');
Я хочу, чтобы {lesson}
теперь ссылался на порядковый номер, а не на id
столбец.
Я пробовал это в моем RouteServiceProvider
Route::bind('lessons', function ($course, $lesson) {
return App\CourseLesson::where('order_number', $lesson)
->where('course_id', $course->id)
->first();
});
Я также попытался пойти по маршруту getRouteKeyName
, это могло бы сработать, за исключением того факта, что он не гарантирует, что запись урока является частью курса, к которому {course}
привязан.
public function getRouteKeyName() {
return 'order_number';
}
Ни один из них не работает, кажется, что он все еще ссылается на столбец id
. Это даже не гарантирует, что столбец course_id
в таблице уроков совпадает с {course}
, переданным на маршрут ...
Вот мой метод управления:
public function show(Course $course, CourseLesson $lesson) {
return view('frontend.lessons.show', compact('lesson', 'course'));
}