指南

批量操作

了解如何以批量方式管理实体。

模型和关联均支持以下批量操作:store、update、destroy 和 restore。

批量创建

该端点期望请求载荷中包含一个带有 resources 数组的对象,数组中的每一项都是一个表示要创建的资源(例如一篇文章)的对象。

// (POST) https://myapp.com/api/posts/batch
{
    "resources" : [
        {
            "title" : "My Post 1",
            "body" : "Example body text"
        },
         {
            "title" : "My Post 2",
            "body" : "Example body text"
        }
    ]
}

批量更新

该端点期望请求载荷中包含一个带有 resources 对象的对象,其中每个键是资源 id,每一项都是一个表示要更新的资源(例如一篇文章)的对象。

// (PATCH) https://myapp.com/api/posts/batch
{
    "resources" : {
        "5" : {
            "title" : "My Post 1 (updated)",
            "body" : "Example updated body text"
        },
        "6": {
            "title" : "My Post 2",
            "body" : "Example body text"
        }
    }
}

批量删除

该端点期望请求载荷中包含一个带有 resources 数组的对象,数组中的每一项都是要删除的资源(例如一篇文章)的 id。

// (DELETE) https://myapp.com/api/posts/batch
{
    "resources" : [5,6]
}

批量恢复

该端点期望请求载荷中包含一个带有 resources 数组的对象,数组中的每一项都是要恢复的资源(例如一篇文章)的 id。

// (POST) https://myapp.com/api/posts/batch/restore
{
    "resources" : [5,6]
}

禁用批量操作

所有资源默认启用批量操作。如果你想禁用特定端点,可以使用 Laravel 的 except 方法:

Orion::resource('posts', PostsController::class)->except(['batchStore', 'batchUpdate']);

要禁用某个资源上的全部批量操作,可以使用 withoutBatch 方法:

Orion::resource('posts', PostsController::class)->withoutBatch();