eyf/laravel-normalizr

Normalizr Laravel Eloquent API Resources

dev-master 2020-06-19 11:33 UTC

This package is auto-updated.

Last update: 2024-04-19 21:08:05 UTC


README

Normalizr Laravel Eloquent API Resources

Install

composer require eyf/laravel-normalizr

Usage

use Eyf\Normalizr\Http\Resources\JsonResource;

class User extends JsonResource
{
  public function toArray($request)
  {  
    return [
      'id' => $this->id,
      'name' => $this->name,
      // ...

      'posts' => Post::collection($this->whenLoaded('posts')),
    ];
  }
}

Controller

Assuming route model binding.

use App\Http\Resources\User as UserResource;

class UserController extends Controller
{
  public function find(Request $request, User $user)
  {
    $user->loadMissing('posts');
    
    return new UserResource($user);
  }
}

Response

{
  "data": {
    "entities": {
      "users": {
        "1": {
          "id": 1,
          "name": "John",
          "posts": [2, 3]
        }
      },
      "posts": {
        "2": {
          "id": 2,
          "title": "Post 2"
        },
        "3": {
          "id": 3,
          "title": "Post 3"
        }
      }
    },
    "result": 1
  }
}