#laravel #eloquent #laravel-routing #laravel-5.7
#laravel #красноречивый #laravel-маршрутизация #laravel-5.7
Вопрос:
Я знаю, что этот вопрос может быть полностью основан на мнении, но здесь идет. Я хотел бы знать рекомендуемый способ структурирования маршрутов на основе отношений моделей в Laravel. Возьмем, к примеру, следующие три модели:
User
Post
Comment
С их отношениями (на самом базовом уровне) следующим образом:
User hasMany Posts
Post hasMany Comments
В моем файле rotes я хочу получить список сообщений определенного пользователя. Я мог бы быть склонен использовать любой из следующих:
Route::get('/users/{user_id}/posts')
Route::get('/posts/{user_id}')
А также для получения комментариев к определенному сообщению я могу использовать любой из двух:
Route::get('/posts/{post_id}/comments')
Route::get('/comments/{post_id}')
Какой метод можно было бы назвать наиболее рекомендуемым. И почему? Спасибо вам всем!
Комментарии:
1. Если вы находитесь в
/posts/{post_id}
и можете нажать на комментарий, чтобы просмотреть подробности, то добавление идентификатора комментария к вашему текущему URL имеет больше смысла, поскольку это выглядит так, как будто вы перемещаетесь по древовидной структуре, а не прыгаете по ней. В общем, это зависит от вашей структуры навигации
Ответ №1:
Ваши первые альтернативы выглядят хорошо:
Route::get('/users/{userId}/posts')
Route::get('/posts/{postId}/comments')
Если вы хотите реализовать «обратную» конечную точку, как насчет более явного описания параметров маршрута:
Route::get('/posts/by-user/{userId}')
Route::get('/comments/for-post/{postId}')
Комментарии:
1. Спасибо тебе @Anders. Это определенно направляет меня в правильном направлении.