yajra / laravel-datatables-fractal Goto Github PK
View Code? Open in Web Editor NEWLaravel DataTables Fractal Plugin.
License: MIT License
Laravel DataTables Fractal Plugin.
License: MIT License
I can't get this plugin to work. I keep on getting a Method setTransformer does not exist.
error.
Here's my code:
config/app.php
<?php
return [
// Omitted
/*
* Package Service Providers...
*/
// Omitted
Yajra\DataTables\DataTablesServiceProvider::class,
Yajra\DataTables\FractalServiceProvider::class,
// Omitted
'aliases' => [
// Omitted
'DataTables' => Yajra\DataTables\Facades\DataTables::class,
];
]
UserController.php
namespace App\Http\Controllers;
use App\Models\User;
use App\Transformers\EmployeeTransformer;
use DataTables;
class DailyTimeRecordController extends Controller
{
public function getEmployees() {
$employees = User::role('employee');
return Datatables::eloquent($employees)
->setTransformer(new EmployeeTransformer)
->make()
}
}
EmployeeTransformer.php
namespace App\Transformers;
use App\Models\User;
use League\Fractal\TransformerAbstract;
class DailyTimeRecordsTransformer extends TransformerAbstract
{
/**
* A Fractal transformer.
*
* @param User $user
* @return array
*/
public function transform(User $user)
{
return [
'full_name' => $user->full_name,
'avatar' => $user->avatar,
// Omitted
];
}
}
Error Stacktrace:
[2017-09-12 18:17:07] local.ERROR: BadMethodCallException: Method setTransformer does not exist. in /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php:74 Stack trace: #0 /Users/alexanderawitin/Code/tymelog/app/Http/Controllers/UserController.php(45): Yajra\DataTables\DataTableAbstract->__call('setTransformer', Array) #1 [internal function]: App\Http\Controllers\UserController->timeLogs(Object(Illuminate\Http\Request), NULL, NULL) #2 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array(Array, Array) #3 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('timeLogs', Array) #4 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\UserController), 'timeLogs') #5 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\Routing\Route->runController() #6 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(572): Illuminate\Routing\Route->run() #7 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #8 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #9 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #10 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #11 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #12 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), '60', '1') #13 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #14 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #15 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(574): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #16 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(533): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #17 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(511): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #18 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #19 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #20 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #21 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #22 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #23 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #24 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #25 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #26 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #27 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure)) #28 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #29 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #30 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #31 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #32 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #33 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #34 /Users/alexanderawitin/Code/tymelog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #35 /Users/alexanderawitin/Code/tymelog/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #36 /Users/alexanderawitin/.composer/vendor/laravel/valet/server.php(133): require('/Users/alexande...') #37 {main}
Also, php artisan vendor:publish --tag=datatables-fractal --force
don't seem to publish any file related to this package.
Can't install laravel-datatables-fractal
because it's require yajra/laravel-datatables-oracle: 8.*
and not supporting yajra/laravel-datatables-oracle: 9.*
when trying to install this package plugin
with composer require yajra/laravel-datatables-fractal
composer shows error:
yajra/laravel-datatables-fractal v1.3.0 requires yajra/laravel-datatables-oracle 8.*
$dataTable = new EloquentDataTable($query);
return $dataTable
->setTransformer(new CategoryTransformer())
->addColumn('action', 'admin.categories.datatables_actions');
If i user this - action buttons do not display. How to include them with the transformer ?
in README.md,
Yajra\Datatables\FractalServiceProvider::class
should be Yajra\DataTables\FractalServiceProvider::class, right?
DataTables not Datatables. Otherwise I'll get error.
Hi, I am trying to using fractal in datatables and after installing this plugin, I still have the above error.
The package that install in my Laravel Application is :
here is my code
DaftarMutasiController.php
use DataTables;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use App\Transformers\DaftarMutasiTransformers;
public function daftar_json(Request $request = null, $id)
{
$daftar = DaftarMutasi::select('id', 'no_urut', 'nama', 'nip', 'golru', 'ttl', 'jabatan_lama', 'unit_kerja_lama', 'jabatan_baru', 'unit_kerja_baru')
->where('id_riwayat_mutasi', $id)
->orderBy('no_urut', 'asc')
->get();
return DataTables::eloquent($daftar)
->setTransformer(new DaftarMutasiTransformers)
->toJson();
}
DaftarMutasiTransformers.php
<?php
namespace App\Transformers;
use App\DaftarMutasi;
use League\Fractal;
class DaftarMutasiTransformers extends Fractal\TransformerAbstract
{
/**
* @param \App\User $user
* @return array
*/
public function transform(DaftarMutasi $daftar)
{
$daftar = DaftarMutasi::select('id', 'no_urut', 'nama', 'nip', 'golru', 'ttl', 'jabatan_lama', 'unit_kerja_lama', 'jabatan_baru', 'unit_kerja_baru')
->where('id_riwayat_mutasi', $id)
->orderBy('no_urut', 'asc')
->get();
return [
'id' => (int) $daftar['id'],
'no_urut' => $daftar['no_urut'],
'nama' => $daftar['nama'] ,
'nip' => $daftar['nip'],
'golru' => $daftar['golru'],
'ttl' => $daftar['ttl'],
'jabatan_lama' => $daftar['jabatan_lama'].' '.$daftar['unit_kerja_lama'],
'jabatan_baru' => $daftar['jabatan_baru'].' '.$daftar['unit_kerja_baru'],
];
}
}
Can't install the fractal, because fractal need to be exact on v0.18.0
seems have colleration with this statement craftcms/element-api#109 (comment)
PS D:\htdocs\hokky-laravel> composer require yajra/laravel-datatables-fractal:^1.0
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Can only install one of: league/fractal[0.16.0, 0.18.0].
- Can only install one of: league/fractal[0.18.0, 0.16.0].
- Can only install one of: league/fractal[0.16.0, 0.18.0].
- yajra/laravel-datatables-fractal v1.0.0 requires league/fractal ^0.16 -> satisfiable by league/fractal[0.16.0].
- Installation request for yajra/laravel-datatables-fractal 1.0 -> satisfiable by yajra/laravel-datatables-fractal[v1.0.0].
- Installation request for league/fractal (locked at 0.18.0) -> satisfiable by league/fractal[0.18.0].
if I tried using manual install fractal 0.16.0, it will conflict with newest datatables version
PS D:\htdocs\hokky-laravel> composer require league/fractal:^0.16.0
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- yajra/laravel-datatables-fractal v1.5.0 requires league/fractal ^0.18.0 -> satisfiable by league/fractal[0.18.0] but these conflict with your requirements or minimum-stability.
- yajra/laravel-datatables-fractal v1.5.0 requires league/fractal ^0.18.0 -> satisfiable by league/fractal[0.18.0] but these conflict with your requirements or minimum-stability.
- yajra/laravel-datatables-fractal v1.5.0 requires league/fractal ^0.18.0 -> satisfiable by league/fractal[0.18.0] but these conflict with your requirements or minimum-stability.
- Installation request for yajra/laravel-datatables-fractal (locked at v1.5.0) -> satisfiable by yajra/laravel-datatables-fractal[v1.5.0].
Installation failed, reverting ./composer.json to its original content.
Problem 1
- Can only install one of: league/fractal[0.17.0, 0.16.0].
- Can only install one of: league/fractal[0.16.0, 0.17.0].
- Can only install one of: league/fractal[0.16.0, 0.17.0].
- yajra/laravel-datatables-fractal v1.0.0 requires league/fractal ^0.16 -> s
atisfiable by league/fractal[0.16.0].
- Installation request for yajra/laravel-datatables-fractal 1.0 -> satisfiab
le by yajra/laravel-datatables-fractal[v1.0.0].
- Installation request for league/fractal (locked at 0.17.0) -> satisfiable
by league/fractal[0.17.0].
Installation failed, reverting ./composer.json to its original content.
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires yajra/laravel-datatables-fractal ^1.6 -> satisfiable by yajra/laravel-datatables-fractal[v1.6.0].
- yajra/laravel-datatables-fractal v1.6.0 requires league/fractal ^0.19.0 -> found league/fractal[0.19, 0.19.1, 0.19.2] but the package is fixed to 0.20.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require yajra/laravel-datatables-fractal:*" to figure out if any version is installable, or "composer require yajra/laravel-datatables-fractal:^2.1" if you know which you need.
How can I add yajra/laravel-datatables-fractal in laravel 9 ?
https://yajrabox.com/docs/laravel-datatables/master/response-fractal
When using tranformer, all response manipulations must be done via transformer. Thus
addColumn
,editColumn
,removeColumn
,setRowAttr
,setClassAttr
, etc... should be avoided when using fractal.
https://yajrabox.com/docs/laravel-datatables/master/row-options
The methods above are extremely useful, why is fractal preventing their use?
I am working on a project using Laravel with Mongo DB , this is my transformer
<?php
namespace App\Datatables;
use League\Fractal;
use App\Models\Device;
use Carbon\Carbon;
class DeviceTransformer extends Fractal\TransformerAbstract
{
public function transform(Device $device)
{
$online='<a ><span class="avatar"> <span class="avatar-status-offline"></span> </span>offline</a>';
$vlan= $device->InternetGatewayDevice['WANDevice']['1']['WANConnectionDevice']['1']['WANPPPConnection']['1']['X_HW_VLAN']['_value']??"";
$mac=$device->VirtualParameters['Macaddress']['_value']??"";
$pppoeUsername=$device->VirtualParameters['pppoeUsername']['_value']??"";
$rxpower=$device->VirtualParameters['RXPower']['_value']??"";
$ssid=$device->InternetGatewayDevice['LANDevice']['1']['WLANConfiguration']['1']['SSID']['_value']??"";
$lastinform=$device->_lastInform ??"";
$lastinform=Carbon::parse($lastinform)->format('Y-m-d H:i:s');
$now=Carbon::now()->subMinutes(5);
$last24hours=Carbon::now()->subHours(24);
if($lastinform> $now)
$online='<a><span class="avatar"> <span class="avatar-status-online"></span> </span>Online</a>';
elseif($lastinform<$now && $lastinform > $last24hours)
$online='<a><span class="avatar"> <span class="avatar-status-busy"></span> </span>Past 24 Hours</a>';
return [
'id' => $device->_id,
'serial'=>$device->_deviceId['_SerialNumber'],
'productclass'=>$device->_deviceId['_ProductClass'],
'vendor'=>$device->_deviceId['_Manufacturer'],
'lastInform'=> $lastinform,
'vlan' => $vlan."",
'Mac'=>$mac,
'PPPusername'=>$pppoeUsername,
'RX'=>$rxpower,
'ssid'=>$ssid,
'action'=> "<a href='".$device->_id."'>Show</a>",
'online'=>$online
];
}
}
this is how I call data in the controller
$data=Device::query();
return DataTables::of($data)
->setTransformer('App\Datatables\DeviceTransformer')
->make(true);
the problem is after 3 or 4 pages same raws comming to data table , and just 2 or 3 raws change.
how is that Possible, it seems datatable return same raws again and again in different pages .
Hello,
I'm trying to use serverside datable loading with yajra/databale.
This my composer.json :
"require": {
"php": ">=5.6.4",
"elibyy/tcpdf-laravel": "5.5.*",
"laravel/framework": "5.5.*",
"laravel/socialite": "^3.0",
"laravel/tinker": "~1.0",
"paragonie/random_compat": "~1.4",
"pulkitjalan/google-apiclient": "3.*",
"yajra/laravel-datatables-fractal": "1.0",
"yajra/laravel-datatables-oracle": "~8.0"
},
this is my config/app.php
'providers' => [
//DATATABLES
Yajra\DataTables\DataTablesServiceProvider::class,
Yajra\DataTables\FractalServiceProvider::class
],
'aliases' => [
'DataTables' => Yajra\DataTables\Facades\DataTables::class,
],
This is my cntroller :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Yajra\Datatables\Datatables;
use Yajra\DataTables\FractalServiceProvider;
use Illuminate\Support\Facades\DB;
use App\Peserta;
use App\Kegiatan;
use PDF;
class SertifikatController extends Controller
{
public function index(){
$getListKegiatan = Kegiatan::getListKegiatan();
$data = array('list_kegiatan' => $getListKegiatan);
return view('sertifikat.index', $data);
}
public function getSertifikatDatatables(request $request)
{
DB::statement(DB::raw('set @rownum=0'));
$query = DB::table('tr_peserta')
->leftJoin('tr_kegiatan', 'tr_kegiatan.id', '=', 'tr_peserta.id_tr_kegiatan')
->leftJoin('mst_judul_acara', 'mst_judul_acara.id', '=', 'tr_kegiatan.id_mst_judul_acara')
->select([DB::raw('@rownum := @rownum + 1 AS rownum'),'tr_peserta.id','mst_judul_acara.judul_acara', 'tr_peserta.nim', 'tr_peserta.nama', 'tr_kegiatan.alias', 'tr_peserta.asal_kampus'])
->where('tr_peserta.active', 1);
$datatables = Datatables::of($query);
if($id = $request->input('id_kegiatan')) {
$datatables->where('tr_peserta.id_tr_kegiatan', $id);
}
return $datatables
->addColumn('action', function ($peserta) {
return '<button type="button" class="btn btn-mini" onclick="hapusPeserta(\''.$peserta->id.'\')"><i class="fontello-icon-trash-3"></i></button>';
})
->make(true);
}
}
but i'm still got error.
Can someone help me please.
Thanks a lot.
Hello
It seems that searching the table always return empty if the data has been transform. How can I make the searching return the appropriate data while using transformer?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.