📜  在 laravel 中制作资源 - PHP (1)

📅  最后修改于: 2023-12-03 14:50:59.924000             🧑  作者: Mango

在 Laravel 中制作资源 - PHP

在 Laravel 中,使用资源(Resources)可以帮助我们整理和优化应用程序中的业务逻辑代码,并提供 API 接口和用户界面所需的数据。本文将介绍如何在 Laravel 中制作资源。

什么是资源?

资源是一个将数据转换为需要的格式以及附加到转换后数据的元数据的类。这个过程通常是为了为 API 或用户界面提供规范化的输出。资源可以包含不同的数据类型,如集合、模型和数组。

资源类通常位于 app/Http/Resources 目录中,它们可以通过 make:resource Artisan 命令或手动创建。

制作资源
创建资源

使用 make:resource 命令创建资源类:

php artisan make:resource UserResource

当传递了模型到资源类的构造函数时,可以使用 $this->resource 获取模型实例。

定义资源属性

使用 toArray 方法定义资源类的可见属性,该方法定义了资源将显示的属性。在属性名称之前使用 -> 运算符来访问其他嵌套的资源。

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}
返回资源

一旦定义了资源类,就可以在控制器方法中返回资源了。

use App\Http\Resources\UserResource;

public function show(User $user)
{
    return new UserResource($user);
}
集合资源

集合资源用于返回模型数组的集合。使用 collection 方法指定集合内的资源类。

use App\Http\Resources\UserCollection;

public function index()
{
    $users = User::all();

    return new UserCollection($users);
}
额外的元数据

资源类可以附加额外的元数据到序列化的数据中。例如,可以添加一个 links 数组,其中包含到该模型的相关链接。

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
        'links' => [
            'self' => url('/users/' . $this->id),
        ],
    ];
}
结论

在 Laravel 中创建资源类可以帮助我们确保 API 和用户界面所需的输出格式的一致性。使用 make:resource Artisan 命令可以快速生成资源类。在资源类中定义属性和其他元数据可以确保输出的数据的准确性和完整性。