Laravel-datatables: How to use transformers?

Created on 16 May 2016  路  2Comments  路  Source: yajra/laravel-datatables

Summary of problem or feature request

Hello I want to ask you how to apply transformers on controller. I already followed your documentation, then i got an exception that 'AppTransformers\DatatablesTransformer' does not exist. How do i create this class? Do i must create it manually?

Most helpful comment

Yes, you need to create it manually. See example transformer for ref. You also need to learn fractal.

namespace App\Transformers;

use League\Fractal\TransformerAbstract;
use Carbon\Carbon;

class DatatablesTransformer extends TransformerAbstract
{
    /**
     * @return array
     */
    public function transform(array $data)
    {
        return [
            'id'         => (int) $data['id'],
            'name'       => $data['name'] . ' - fractal',
            'email'      => $data['email'],
            'created_at' => $this->dateFormatter($data['created_at']),
            'updated_at' => $this->dateFormatter($data['updated_at']),
        ];
    }

    /**
     * @param null|DateTime $dateTime
     * @return string
     */
    public function dateFormatter($dateTime)
    {
        return $dateTime ? with(new Carbon($dateTime))->format($this->getDateFormat()) : null;
    }

    /**
     * @return string
     */
    public function getDateFormat()
    {
        return 'Y-m-d';
    }
}

All 2 comments

Yes, you need to create it manually. See example transformer for ref. You also need to learn fractal.

namespace App\Transformers;

use League\Fractal\TransformerAbstract;
use Carbon\Carbon;

class DatatablesTransformer extends TransformerAbstract
{
    /**
     * @return array
     */
    public function transform(array $data)
    {
        return [
            'id'         => (int) $data['id'],
            'name'       => $data['name'] . ' - fractal',
            'email'      => $data['email'],
            'created_at' => $this->dateFormatter($data['created_at']),
            'updated_at' => $this->dateFormatter($data['updated_at']),
        ];
    }

    /**
     * @param null|DateTime $dateTime
     * @return string
     */
    public function dateFormatter($dateTime)
    {
        return $dateTime ? with(new Carbon($dateTime))->format($this->getDateFormat()) : null;
    }

    /**
     * @return string
     */
    public function getDateFormat()
    {
        return 'Y-m-d';
    }
}

Thank you for your answer.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

sangnguyenplus picture sangnguyenplus  路  3Comments

FilipeBorges1993 picture FilipeBorges1993  路  3Comments

shadoWalker89 picture shadoWalker89  路  3Comments

hari-web picture hari-web  路  3Comments

SGarridoDev picture SGarridoDev  路  3Comments