指南

响应

了解模型如何被转换为 JSON 响应。

Orion 使用 API 资源作为 Eloquent 模型与最终返回给 API 客户端的响应之间的转换层。

为了让这些类能够被自动解析,它们应遵循如下命名模式:App\Http\Resources\<model>ResourceApp\Http\Resources\<model>CollectionResource

例如,如果你有一个 App\Models\Message 模型,对应的资源类就是 App\Http\Resources\MessageResourceApp\Http\Resources\MessageCollectionResource

如果应用中的资源类名不遵循该命名约定,或者你只是想更加明确,可以在控制器上将 protected $resourceprotected $collectionResource 属性设置为资源类的完全限定类名。

<?php

namespace App\Http\Controllers\Api;

use App\Models\Message;
use App\Http\Resources\CustomMessageResource;
use App\Http\Resources\CustomMessageCollectionResource;

class MessagesController extends ApiController
{
    /**
     * @var string $model
     */
    protected $model = Message::class;

    /**
     * @var string $resource
     */
    protected $resource = CustomMessageResource::class;

    /**
     * @var string $collectionResource
     */
    protected $collectionResource = CustomMessageCollectionResource::class;
}
Orion\Http\Resources\ResourceOrion\Http\Resources\CollectionResource 类上都提供了一个便捷的 toArrayWithMerge 方法——不妨去看一看。