manajet/laravel-extra-resource

此包允许您向您的 Eloquent API 资源和集合添加额外参数。

v0.3.4 2020-05-19 14:59 UTC

This package is auto-updated.

Last update: 2024-09-19 23:46:57 UTC


README

![软件许可][ico-license] [![总下载量][ico-downloads]][link-downloads]

关于

此包允许您向您的 Eloquent API 资源和集合添加额外参数。

高度受 gdebrauwer 的问题回答他的 pull-request 的启发。

安装

在您的 composer.json 中需要 manajet/laravel-extra-resource 包并更新您的依赖项

composer require manajet/laravel-extra-resource

创建资源

您可以使用此命令创建新的资源

php artisan make:extraresource MyResource

除了 Laravel 的 make:resource 命令之外,您还可以传递 --collection 选项来创建带有额外参数的新集合

php artisan make:extraresource MyCollection --collection

用法

您可以像以前一样使用您的资源。要传递额外参数,请使用 using 方法。

资源

$user = User::find(1);
return (new UserResource($user))->using(['foo' => 'bar']);

并在您的资源类中

<?php

namespace App\Http\Resources;

use Manajet\ExtraResource\ExtraJsonResource;

class UserResource extends ExtraJsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'foo' => $this->extra['foo'],
        ];
    }
}

集合

集合将尝试使用您的资源类,因此您需要先创建它。

$users = User::all();
return (new UserCollection($users))->using(['foo' => 'bar']);

您还可以使用静态的 collection 方法使用它

$users = User::all();
return UserResource::collection($users)->using(['foo' => 'bar']);

许可

在 MIT 许可下发布,请参阅 LICENSE