cyberfly
11/29/2017 - 3:44 AM

Laravel 5.5 resource custom transformer

Use this one if needed to customize the resource transformer data

<?php

namespace App\Http\Resources\V1\ApplicationService;

use Illuminate\Http\Resources\Json\ResourceCollection;

class ApplicationServiceResourceCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'data' => $this->collection->transform(function($page){
                return [
                    'uuid' => $page->uuid,
                    'vendor_id' => $page->vendor_id,
                    'appservice_name' => $page->appservice_name,
                    'description' => $page->description,
                    'version' => $page->version,
                    'approval_status_id' => $page->approval_status_id,
                    'is_publish' => (boolean) $page->is_publish,
                    'vendor'=> $page->vendor,
                    'approval_status'=> $page->approval_status,
                    'appservice_components'=> $page->appservice_components->load('component'),
//                    'component'=> optional($page->appservice_components)->component,
                ];
            }),
        ];
    }
}
public function store(StoreVendorApplicationServiceRequest $request, $vendor_id)
    {
        $vendor = $this->vendor->findOrFailUuid($vendor_id);
 
        $request_data = $request->all();
 
        //create application service
 
        $application_service = $vendor->appservices()->create($request_data);
 
        //create application service components
 
        $application_service->appservice_components()->create($request_data);
 
        //create applicaton service categories
 
        if ($request->filled('categories')) {
            $application_service->categories()->attach($request->categories);
        }
 
        //create applications service tags
 
        if ($request->filled('tags')) {
            $application_service->attachTags($request->tags);
        }
 
        $resource = new ApplicationServiceResource($application_service);
 
        return $this->responseCreated($resource);
    }
<?php

namespace App\Http\Resources\V1\ApplicationService;

use Illuminate\Http\Resources\Json\Resource;

class ApplicationServiceResource extends Resource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'uuid' => $this->uuid,
            'appservice_name' => $this->appservice_name,
            'description' => $this->description,
            'version' => $this->version,
            'approval_status_id' => $this->approval_status_id,
            'is_publish' => (boolean) $this->is_publish,
            'vendor_id' => $this->vendor_id,
            'vendor'=> $this->vendor,
            'approval_status'=> $this->approval_status,
            'appservice_components'=> $this->appservice_components->load('component'),
//            'component'=> optional($this->appservice_components)->component,
        ];
    }
}