1. Go to this page and download the library: Download intermax/laravel-json-api library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Illuminate\Http\Request;
use Intermax\LaravelJsonApi\Resources\JsonApiResource;
class UserResource extends JsonApiResource
{
public function getAttributes(Request $request): array
{
return [
'email' => $this->resource->email,
'name' => $this->resource->name,
];
}
public function getRelations(Request $request): ?array
{
return null;
}
public function getLinks(Request $request): ?array
{
return null;
}
}
use Illuminate\Http\Request;
use App\Http\Resources\UserResource;
class UserController
{
public function show(User $user): UserResource
{
return new UserResource($user);
}
}
namespace App\Http\Requests;
use Intermax\LaravelJsonApi\Filters\ScopeFilter;
use Intermax\LaravelJsonApi\Filters\OperatorFilter;
use Intermax\LaravelJsonApi\Requests\CollectionRequest;
use Intermax\LaravelJsonApi\Sorts\Sort;
use Intermax\LaravelJsonApi\Includes\Relation;
class UserCollectionRequest extends CollectionRequest
{
public function filters(): array
{
return [
new OperatorFilter('createdAt'),
new ScopeFilter('isAdmin'),
];
}
public function sorts(): array
{
return [
new Sort('name'),
];
}
public function
use Intermax\LaravelJsonApi\Requests\QueryResolver;
class UserController
{
public function index(UserCollectionRequest $request, QueryResolver $queryResolver): UserResourceCollection
{
$query = User::query();
$queryResolver->resolve($request, $query);
$query->where(...) // You can alter the query further if needed
return new UserResourceCollection($query->jsonPaginate());
}
}
use Intermax\LaravelJsonApi\Filters\OperatorFilter
new OperatorFilter(
fieldName: 'name',
allowedOperators: [
'eq',
'nq',
'contains',
],
);
use Intermax\LaravelJsonApi\Requests\MutationRequest;
class UserUpdateRequest extends MutationRequest
{
protected function type(): string
{
return 'users';
}
protected function attributeRules(): array
{
return [
'email' => ['email'],
'name' => ['string'],
]
}
}
public function update(UserUpdateRequest $request, User $user): UserResource
{
$user->update($request->validatedAttributes());
return new UserResource($user);
}
use Intermax\LaravelOpenApi\Generator\Values\StringValue;
use Intermax\LaravelOpenApi\Generator\Values\IntegerValue;
use Intermax\LaravelOpenApi\Generator\Values\NumberValue;
use Intermax\LaravelOpenApi\Generator\Values\DateTimeValue;
use Intermax\LaravelOpenApi\Generator\Values\BooleanValue;
use Carbon\Carbon;
use Intermax\LaravelJsonApi\Resources\JsonApiResource;
class UserResource extends JsonApiResource
{
public function getAttributes(Request $request): array
{
return [
'age' => new IntegerValue(fn () => Carbon::now()->diffInYears($this->resource->birthDate)),
'email' => new StringValue(fn () => $this->resource->email),
'name' => new StringValue(fn () => $this->resource->name),
'createdAt' => new DateTimeValue(fn () => $this->resource->created_at),
'isAdmin' => new BooleanValue(fn () => $this->resource->is_admin),
];
}
}
/users?filter[isAdmin]=true&sort=name&
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.