PHP code example of lukevear / laravel-transformer
1. Go to this page and download the library: Download lukevear/laravel-transformer 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/ */
namespace App\Transformers;
use App\User;
use LukeVear\LaravelTransformer\AbstractTransformer;
class UserTransformer extends AbstractTransformer
{
/**
* Transform the supplied data.
*
* @param User $model
* @return array
*/
public function run($model)
{
return [
'id' => $model->id,
'name' => $model->first_name . ' ' . $model->last_name
];
}
}
return response()->json(
transform($user, new UserTransformer)
);
return [
/*
|--------------------------------------------------------------------------
| Model <-> Transformer Binding Groups
|--------------------------------------------------------------------------
|
| This allows you to specify which transformers should automatically be
| used when the transform() function is provided a Eloquent model.
|
*/
'groups' => [
'default' => [
// App\User::class => App\Transformers\UserTransformer::class,
],
'v1' => [
App\Models\User::class => App\Transformers\v1\UserTransformer::class,
],
'v2' => [
App\Models\User::class => App\Transformers\v2\UserTransformer::class,
],
],
];
public function handle($request, Closure $next)
{
if ($request->is('v1*')) {
TransformerEngine::setGroup('v1');
} else {
TransformerEngine::setGroup('v2');
}
return $next($request);
}
return response()->json(
transform($user)
);
namespace App\Transformers;
use App\User;
use LukeVear\LaravelTransformer\AbstractTransformer;
class UserTransformer extends AbstractTransformer
{
/**
* Transform the supplied data.
*
* @param User $model
* @return array
*/
public function run($model)
{
$response = [
'id' => $model->id,
'name' => $model->first_name . ' ' . $model->last_name
];
if ($this->hasInclude('settings')) {
$response['settings'] = transform($model->settings, new UserSettingsTransformer);
}
return $response;
}
}
return response()->json(
transform($user, (new UserTransformer)->setIncludes(['settings'])
);