gpt4 book ai didi

laravel - API RESTful Laravel 6.x 多对多关系的最佳实践

转载 作者:行者123 更新时间:2023-12-04 16:27:36 26 4
gpt4 key购买 nike

我正在使用 Laravel 6 开发 API。

我有两个模型:

card -> table cards with card_id ecc.

user -> table users with user_id ecc.

我已经在模型中定义了多对多关系

用户.php

public function cards()
{
return $this->belongsToMany('App\Models\v1\Card');
}

卡片.php

public function users() {
return $this->belongsToMany('App\Models\v1\User');
}

数据透视表称为 card_user 。

现在我已经为单个实体创建了路由:

Route::resource('v1/users', 'v1\UsersController');
Route::resource('v1/cards', 'v1\CardsController');

我需要开发用于从数据透视表中插入和删除行的路由和 Controller 。

这个问题的最佳做法是什么?

我尝试使用响应特定端点的特殊 Controller 来解决此问题:

Route::resource('v1/cards/{id}/users', 'v1\CardsUsersController')->only([
'index', 'store', 'destroy'
]);

但是当我需要存储信息时,我需要将卡和用户的 ID 传递到 URL 中,并作为帖子正文中的对象,如下所示:

[
'user_id' => $userId,
'card_id' => $cardId
]

有更好的方法吗?

非常感谢!

最佳答案

您可以按照此处所述使用嵌套资源: https://laravel.com/docs/6.x/controllers#restful-nested-resources

“有时您可能需要定义到“嵌套”资源的路由。例如,照片资源可能有多个“评论”,这些“评论”可能会附加到照片上。要“嵌套”资源 Controller ,请使用“点”表示法在您的路线声明中:

Route::resource('photos.comments', 'PhotoCommentController');

此路由将注册一个“嵌套”资源,可以使用以下 URL 访问该资源:photos/{photos}/comments/{comments}。”

关于laravel - API RESTful Laravel 6.x 多对多关系的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60097352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com