Рекомендуемая структура маршрута Laravel для отношений моделей

#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. Это определенно направляет меня в правильном направлении.