Laravel

Eloquent resources

Example

return new UserResource($user);
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

/**
 * @mixin User
 */
class UserResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,
        ];
    }
}

Note that @mixin tag is required to correctly read model properties in the resource class. This tag will also help if you are using a tool like PHPStan to analyze your code.

How to enable

To enable support for Eloquent resources, make sure you have the following entries in extensions array in your configuration file (enabled by default).

    'extensions' => [
        /**
         * To enable support for `Illuminate\Http\Resources\Json\JsonResource`
         */
        AutoDoc\Laravel\Extensions\ResourceJson::class,

        /**
         * To enable support for `Illuminate\Http\Resources\Json\ResourceCollection`
         */
        AutoDoc\Laravel\Extensions\ResourceCollectionJson::class,

        /**
         * Handles `collection` static method calls on `Illuminate\Http\Resources\Json\JsonResource`
         */
        AutoDoc\Laravel\Extensions\ResourceStaticCall::class,
    ],