推荐的Laravel路线结构用于模型关系

时间:2019-03-25 07:58:24

标签: laravel eloquent laravel-routing laravel-5.7

我知道这个问题可能完全基于观点,但这是可行的。我想知道在Laravel中基于模型关系构造路线的推荐方法。以以下三个模型为例:

<fieldset>
    <div>
        <input disabled="disabled" value="Name" />
        <input disabled="disabled" value="Spec" />
        <input disabled="disabled" value="Type" />
        <input disabled="disabled" value="Field 1" />
        <input disabled="disabled" value="Field 2" />
        <input disabled="disabled" value="Field 3" />
        <input disabled="disabled" value="Field 4" />
        <input disabled="disabled" value="Field 5" />
    </div>
    <div>
        <input name="ListA[0][0].Name" id="ListA_0__0__Name" type="text" value="0 - 0"></input>
        <input name="ListA[0][0].Spec" id="ListA_0__0__Spec" type="text"></input>
        <input name="ListA[0][0].Type" id="ListA_0__0__Type" type="text"></input>
        <input name="ListA[0][0].Field1" id="ListA_0__0__Field1" type="text"></input>
        <input name="ListA[0][0].Field2" id="ListA_0__0__Field2" type="text"></input>
        <input name="ListA[0][0].Field3" id="ListA_0__0__Field3" type="text"></input>
        <input name="ListA[0][0].Field4" id="ListA_0__0__Field4" type="text"></input>
        <input name="ListA[0][0].Field5" id="ListA_0__0__Field5" type="text"></input>
    </div>
    <div>
        <input name="ListA[0][1].Name" id="ListA_0__1__Name" type="text" value="0 - 1"></input>
        <input name="ListA[0][1].Spec" id="ListA_0__1__Spec" type="text"></input>
        <input name="ListA[0][1].Type" id="ListA_0__1__Type" type="text"></input>
        <input name="ListA[0][1].Field1" id="ListA_0__1__Field1" type="text"></input>
        <input name="ListA[0][1].Field2" id="ListA_0__1__Field2" type="text"></input>
        <input name="ListA[0][1].Field3" id="ListA_0__1__Field3" type="text"></input>
        <input name="ListA[0][1].Field4" id="ListA_0__1__Field4" type="text"></input>
        <input name="ListA[0][1].Field5" id="ListA_0__1__Field5" type="text"></input>
    </div>
    <div>
        <input name="ListA[0][2].Name" id="ListA_0__2__Name" type="text" value="0 - 2"></input>
        <input name="ListA[0][2].Spec" id="ListA_0__2__Spec" type="text"></input>
        <input name="ListA[0][2].Type" id="ListA_0__2__Type" type="text"></input>
        <input name="ListA[0][2].Field1" id="ListA_0__2__Field1" type="text"></input>
        <input name="ListA[0][2].Field2" id="ListA_0__2__Field2" type="text"></input>
        <input name="ListA[0][2].Field3" id="ListA_0__2__Field3" type="text"></input>
        <input name="ListA[0][2].Field4" id="ListA_0__2__Field4" type="text"></input>
        <input name="ListA[0][2].Field5" id="ListA_0__2__Field5" type="text"></input>
    </div>
</fieldset>
<fieldset>
    <div>
        <input disabled="disabled" value="Name" />
        <input disabled="disabled" value="Spec" />
        <input disabled="disabled" value="Type" />
        <input disabled="disabled" value="Field 1" />
        <input disabled="disabled" value="Field 2" />
        <input disabled="disabled" value="Field 3" />
        <input disabled="disabled" value="Field 4" />
        <input disabled="disabled" value="Field 5" />
    </div>
    <div>
        <input name="ListA[1][0].Name" id="ListA_1__0__Name" type="text" value="1 - 0"></input>
        <input name="ListA[1][0].Spec" id="ListA_1__0__Spec" type="text"></input>
        <input name="ListA[1][0].Type" id="ListA_1__0__Type" type="text"></input>
        <input name="ListA[1][0].Field1" id="ListA_1__0__Field1" type="text"></input>
        <input name="ListA[1][0].Field2" id="ListA_1__0__Field2" type="text"></input>
        <input name="ListA[1][0].Field3" id="ListA_1__0__Field3" type="text"></input>
        <input name="ListA[1][0].Field4" id="ListA_1__0__Field4" type="text"></input>
        <input name="ListA[1][0].Field5" id="ListA_1__0__Field5" type="text"></input>
    </div>
    <div>
        <input name="ListA[1][1].Name" id="ListA_1__1__Name" type="text" value="1 - 1"></input>
        <input name="ListA[1][1].Spec" id="ListA_1__1__Spec" type="text"></input>
        <input name="ListA[1][1].Type" id="ListA_1__1__Type" type="text"></input>
        <input name="ListA[1][1].Field1" id="ListA_1__1__Field1" type="text"></input>
        <input name="ListA[1][1].Field2" id="ListA_1__1__Field2" type="text"></input>
        <input name="ListA[1][1].Field3" id="ListA_1__1__Field3" type="text"></input>
        <input name="ListA[1][1].Field4" id="ListA_1__1__Field4" type="text"></input>
        <input name="ListA[1][1].Field5" id="ListA_1__1__Field5" type="text"></input>
    </div>
    <div>
        <input name="ListA[1][2].Name" id="ListA_1__2__Name" type="text" value="1 - 2"></input>
        <input name="ListA[1][2].Spec" id="ListA_1__2__Spec" type="text"></input>
        <input name="ListA[1][2].Type" id="ListA_1__2__Type" type="text"></input>
        <input name="ListA[1][2].Field1" id="ListA_1__2__Field1" type="text"></input>
        <input name="ListA[1][2].Field2" id="ListA_1__2__Field2" type="text"></input>
        <input name="ListA[1][2].Field3" id="ListA_1__2__Field3" type="text"></input>
        <input name="ListA[1][2].Field4" id="ListA_1__2__Field4" type="text"></input>
        <input name="ListA[1][2].Field5" id="ListA_1__2__Field5" type="text"></input>
    </div>
</fieldset>

与他们的关系(最基本的情况)如下:

User
Post
Comment

在我的rotes文件中,我希望获得特定用户的帖子列表。我可能倾向于使用以下任何一种方法:

User hasMany Posts
Post hasMany Comments

对于获取特定帖子的评论,我可以使用以下两种方式中的任何一种:

Route::get('/users/{user_id}/posts')
Route::get('/posts/{user_id}')

最推荐使用哪种方法。又为什么呢?谢谢大家!

1 个答案:

答案 0 :(得分:4)

您的第一个选择看起来不错:

Route::get('/users/{userId}/posts')
Route::get('/posts/{postId}/comments')

如果要实现“反向”端点,那么如何更明确地描述路由参数:

Route::get('/posts/by-user/{userId}')
Route::get('/comments/for-post/{postId}')