当前位置: 首页 > 知识库问答 >
问题:

API RESTful Laravel 6.x用于多对多关系的最佳实践

孔鹤龄
2023-03-14

我正在用Laravel6开发一个API。

我有两个模型:

CARD->带有card_id ECC的表卡。

我在模型中定义了很多对很多的关系

user.php

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

card.php

public function users() {
    return $this->belongsToMany('App\Models\v1\User');
}
Route::resource('v1/users', 'v1\UsersController');
Route::resource('v1/cards', 'v1\CardsController');

这个问题的最佳实践是什么?

我试图用一个响应特定endpoint的特殊控制器来解决这个问题:

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

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

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

有更好的方法吗?

多谢!

共有1个答案

易阳朔
2023-03-14

您可以使用如下所述的嵌套资源:https://laravel.com/docs/6.x/controllers#restful-nested-resources

有时您可能需要定义到“嵌套”资源的路由。例如,照片资源可能有多个“注释”,这些注释可能附加到照片。若要“嵌套”资源控制器,请在路由声明中使用“点”表示法:

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

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

 类似资料:
  • 保存package.json依赖项的最佳实践是什么? 例如,我看到很多依赖项是不固定的,比如:

  • 问题内容: 我已经阅读了许多有关级联和多对多关联的主题,但是我无法找到我的特定问题的答案。 我在UserProfiles和Roles之间有多对多关系。当我删除UserProfile时,我希望数据库删除联接表(userprofile2role)中的关联记录,因此要使用实际的SQL’ON DELETE CASCADE’操作。这可能吗?无论我尝试什么,Hibernate总是在不指定ON DELETE行为

  • 问题内容: hibernate的最佳做法指出,多对多关联很少见,应避免。 不要使用外来关联映射: 真正的多对多关联的实际测试案例很少见。大多数时候,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多关联用于中间链接类。实际上,大多数关联是一对多和多对一的。因此,在使用任何其他关联样式时,您应谨慎进行。 一个基本且常见的情况是:用户可以在多个团队中,一个团队可以有多个成员。 除了为联

  • 不幸的是,Quarkus关于用Panache使用MongoDB的指南没有提到什么被认为是处理实体的一对多关系的最佳实践。注意:我想为依赖的子文档建模,但作为一个独立的实体。MongoDB站点演示了这种模式:用文档引用建模一对多关系,这样您就必须在存储库中查找链接到父ID的所有实体。 Quarkus(Panache)目前是否提供了任何使查找更方便的方法? PS:似乎从2020年5月开始有一个开放的增

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?

  • 问题内容: 我正在尝试创建一个消息传递系统,其中消息的发送者和接收者可以是通用实体。对于发件人来说,这似乎很好,在该发件人中只有要引用的对象(GenericForeignKey),但我不知道如何为收件人进行处理(GenericManyToManyKey ??)。 下面是一个简化的示例。PersonClient和CompanyClient从Client继承属性,但具有其自己的特定详细信息。最后一行是