📜  在 laravel 8 中使用资源 - PHP (1)

📅  最后修改于: 2023-12-03 15:07:42.271000             🧑  作者: Mango

在 Laravel 8 中使用资源 - PHP

在 Laravel 8 中,你可以使用资源类来定义和呈现 RESTful API。资源类可以将数据库中的数据转换为 JSON 格式或其他格式。在本文中,我们将学习如何创建和使用资源类。

步骤一:创建资源类

创建资源类非常简单,只需要使用 Artisan 命令。假设我们有一个名为 Post 的模型,我们将创建一个名为 PostResource 的资源类:

php artisan make:resource PostResource

该命令将在 app/Http/Resources 目录下创建一个文件名为 PostResource.php 的文件。

步骤二:定义资源类

在资源类中,我们需要指定要包含在 JSON 响应中的数据。我们可以在 toArray 方法中定义这些数据。

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class PostResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'title' => $this->title,
            'body' => $this->body,
            'author' => $this->author->name,
            'created_at' => $this->created_at->format('Y-m-d H:i:s'),
            'updated_at' => $this->updated_at->format('Y-m-d H:i:s'),
        ];
    }
}

在上面的例子中,我们将 idtitlebodyauthorcreated_atupdated_at 列为要在 JSON 响应中包含的数据。

步骤三:使用资源类

要使用资源类,我们需要在控制器中调用它,并将模型实例传递给它。我们还需要使用 response 辅助函数来将资源响应作为 JSON 返回。以下是一个示例控制器方法:

use App\Http\Resources\PostResource;
use App\Models\Post;

public function show(Post $post)
{
    return response()->json(new PostResource($post));
}

在上面的例子中,我们使用 Post 模型实例创建了一个 PostResource 实例,并将其作为 JSON 返回。在此之后,我们可以通过以下 URL 调用该方法:

http://localhost:8000/api/posts/1

在以上 URL 中,1Post 模型实例的 ID。控制器方法将返回以下 JSON 响应:

{
    "id": 1,
    "title": "Lorem ipsum",
    "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "author": "John Doe",
    "created_at": "2021-01-01 01:00:00",
    "updated_at": "2021-01-01 01:00:00"
}
总结

在 Laravel 8 中,资源类可以帮助我们将模型数据转换为特定格式的 JSON 响应。以上是如何创建和使用资源类的步骤。我们可以在控制器中将资源类实例作为 JSON 返回。