Aut tenetur dicta te...Aut tenetur dicta temporibus voluptate omnis tempore placeat. Eveniet tenetur occaecati aspernatur. Et non enim aliquam quia sunt officia debitis voluptatem. Et qui voluptatem ut incidunt aspernatur.
Dolores autem laboriosam officiis ab. Rerum perspiciatis molestias ut deleniti neque. Expedita aut aspernatur enim consectetur voluptates quia qui.
Velit odit et dolor...Velit odit et dolor distinctio dolorem. Nulla saepe iste et qui sed rerum voluptates. Velit et velit ipsa quo aspernatur omnis. Quos vitae distinctio eligendi recusandae. Non sit officia laborum voluptatibus officiis sed ipsam.
Quidem aut ab ipsam numquam aut sed neque. Adipisci minima qui et omnis non voluptatem. Dolor dolor et distinctio fuga. Minus facere asperiores maxime.
Mueller III a,... Mueller III a, 12154, bumsba5464b, Clarissa Howe, Clay Pagac, Cleta Waters, Dane Gibson IV, Darian Pagac DVM, Dr. Cayla Rosenbaum, Dr. Daija Kihn II3, Dr. Diego Raynor, Dr. Melisa Raynor PhD, Ephraim Quitzon, Foster Kerluke, Gabrielle Mitchell, Germaine Toy, Helmer Haley, Jerome Considine2, Joannie Hills, Marcelina Wehner, Miss Zieme, Mr. Barney Macejkovic V, Mr. Jonathon Gibson PhD, Ms. Petra Fadel, nieuwgf, Owen Nicolas, pepitott, Prof. Bartholome Metz PhD, Prof. Jerald Cremin DVM, qqqqq, Raoul Runte, Reta Sporer II, sVicky Rempel MD, Vicenta Dickens
Sit quibusdam quos i...Sit quibusdam quos ipsam temporibus facere. Iure voluptatem perferendis distinctio aut consequatur. Nesciunt praesentium cum id et qui et. Natus tenetur laboriosam temporibus molestiae dolores ratione.
Reiciendis at et autem quidem quidem rerum sit. Qui eum et et alias. Hic sint fuga quidem in enim.
Mueller III a,... Mueller III a, 12154, bumsba5464b, Clarissa Howe, Clay Pagac, Cleta Waters, Dane Gibson IV, Darian Pagac DVM, Dr. Cayla Rosenbaum, Dr. Daija Kihn II3, Dr. Diego Raynor, Dr. Melisa Raynor PhD, Ephraim Quitzon, Foster Kerluke, Gabrielle Mitchell, Germaine Toy, Helmer Haley, Jerome Considine2, Joannie Hills, Marcelina Wehner, Miss Zieme, Mr. Barney Macejkovic V, Mr. Jonathon Gibson PhD, Ms. Petra Fadel, nieuwgf, Owen Nicolas, pepitott, Prof. Bartholome Metz PhD, Prof. Jerald Cremin DVM, qqqqq, Raoul Runte, Reta Sporer II, sVicky Rempel MD, Vicenta Dickens
Velit aspernatur vol...Velit aspernatur voluptatem odit. Placeat saepe voluptas est voluptatem non laudantium. Esse est aut et in ipsam.
Et hic tempora hic vel. Ipsa ratione consequatur aut vitae praesentium et est. Officia id sequi et sit.
Anahi Nitzsche,...Anahi Nitzsche, Anjali McDermott, Aric Rath DDS, Ben Kirlindddll, big foot, Bobbie Kup, Cindy Runolfsson PhD, Dawson Larson, Dessie McDermott, Dr. Deion Williamson, Dr. Ole Shanahan, Dr. Vergie Runte asd, fdsgdsfgdfssdf6, kjsqlkdfjqsdfqsdfqsd, Kurt jjkkj, Lionel Kemmer, Marge Windler, Mr. Casimir Kunde DVM, Mr. Morton Leffler Jr., Mrs. Andreane Swift, off fuck off, ok, Opal Abshire, Orlando Dickinson, Prof. Elnora, Prof. Lucile Mills
Omnis porro dicta cu...Omnis porro dicta cumque impedit placeat illo et. Dolor sapiente accusantium eaque aut occaecati.
Ipsum cum quis provident inventore voluptatem a accusantium. Exercitationem ut quia itaque nesciunt corporis nesciunt quisquam. Corrupti odio praesentium voluptas veniam quis. Saepe explicabo itaque eos non officiis.
Anahi Nitzsche,...Anahi Nitzsche, Anjali McDermott, Aric Rath DDS, Ben Kirlindddll, big foot, Bobbie Kup, Cindy Runolfsson PhD, Dawson Larson, Dessie McDermott, Dr. Deion Williamson, Dr. Ole Shanahan, Dr. Vergie Runte asd, fdsgdsfgdfssdf6, kjsqlkdfjqsdfqsdfqsd, Kurt jjkkj, Lionel Kemmer, Marge Windler, Mr. Casimir Kunde DVM, Mr. Morton Leffler Jr., Mrs. Andreane Swift, off fuck off, ok, Opal Abshire, Orlando Dickinson, Prof. Elnora, Prof. Lucile Mills
Aut qui architecto d...Aut qui architecto doloribus laboriosam. Consequuntur enim sit doloribus distinctio aut nihil. Dolorum dolores delectus quam consequatur eum enim est. Est molestiae et maxime qui labore.
Nostrum modi ratione doloremque et aut. Aspernatur magni debitis iure accusantium nihil. Molestiae dolor dolores ut ea atque excepturi.
Architecto consectet...Architecto consectetur et dolor. Blanditiis qui quia iure sint est laudantium. Quod accusantium laborum aut libero laborum dolorum molestiae. Adipisci aperiam libero quasi perferendis.
Rem blanditiis blanditiis iste fugit. Est deleniti voluptas velit minima et impedit et autem. Vel ut sint fugiat amet corporis aspernatur. Consequatur ipsum cumque voluptas eum.
Anahi Nitzsche,...Anahi Nitzsche, Anjali McDermott, Aric Rath DDS, Ben Kirlindddll, big foot, Bobbie Kup, Cindy Runolfsson PhD, Dawson Larson, Dessie McDermott, Dr. Deion Williamson, Dr. Ole Shanahan, Dr. Vergie Runte asd, fdsgdsfgdfssdf6, kjsqlkdfjqsdfqsdfqsd, Kurt jjkkj, Lionel Kemmer, Marge Windler, Mr. Casimir Kunde DVM, Mr. Morton Leffler Jr., Mrs. Andreane Swift, off fuck off, ok, Opal Abshire, Orlando Dickinson, Prof. Elnora, Prof. Lucile Mills
Consequatur vero qua...Consequatur vero quas sunt unde magni. Labore aliquid iusto temporibus alias a maxime vel. Asperiores maiores ut sunt perferendis aut a nisi. Consequatur doloribus voluptatem voluptas amet consequuntur ullam.
Corporis nam ratione sit maxime. Debitis non cumque ut sit temporibus saepe qui. Sapiente nisi fugiat velit minus.
Et qui consequuntur...Et qui consequuntur labore non eaque hic libero ut. Nemo ullam maiores ut autem magni labore porro et. At fuga veniam nemo alias fugiat iusto minima. Et aut distinctio quia ipsa. Excepturi consequatur aut dolor fuga beatae vero dolor.
Deserunt quos necessitatibus enim occaecati unde qui. Dolor consequuntur quasi sapiente dolorum voluptas et velit. Sunt doloremque quidem molestiae hic consequatur.
566, Arno Kuphal...566, Arno Kuphal, Christiana Bergstrom, Dr. Celestino Welch, Dr. Lonzo Runolfsdottir PhD, Dr. Orval Bartell MD, Emely Bruen, Ervin Blanda, Hannah Ledner Sr., Johathan Monahan, Keenan Heaney, Mac Schultzx, Marlin Schmidt, Maynard Morissette, Miss Ethelyn Klein, Miss Kaci kll III, Mr. Dean Vandervort DDS, Mr. Kaleigh Lehner, Mr. Milo Schaefer, Mr. Terence Welch Sr., Odell Kunde, Otha Stracke I, Polly Predovic, Prof. Ephraim Crona, Prof. Furman Hackett III, Prof. Jarred Prohaska, Prof. Mac Nienow PhD, Prof. Nico Bins, Prof. Ryleigh Tremblay, Prof. Sadye Rolfson DDS, qqLittle IV, Reanna Wuckertefeffeefefklj lkj, Reyes Nader, Tony Gleichner, Vern Muller, Waino Feeney, Yasmin Eichmann
Veritatis labore qui...Veritatis labore qui aut quos asperiores. Quod occaecati qui corporis. In quaerat sint a architecto est.
Sit hic impedit rerum unde. Molestias id inventore libero ipsam. Explicabo deserunt sint neque accusamus occaecati aut. Facere et velit quis eum adipisci dolores.
AT-AT Pilot
Previous
Results 1 - 10 of
2000
Query Builder
ComplexDemoTable::$selected
Array
(
)
resources/views/complex.blade.php
<livewire:complex-demo-table />
app/Http/Livewire/ComplexDemoTable.php
<?php
namespace App\Http\Livewire;
use App\User;
use App\Planet;
use App\Region;
use App\Weapon;
use Illuminate\Support\Str;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Mediconesystems\LivewireDatatables\Column;
use Mediconesystems\LivewireDatatables\DateColumn;
use Mediconesystems\LivewireDatatables\TimeColumn;
use Mediconesystems\LivewireDatatables\NumberColumn;
use Mediconesystems\LivewireDatatables\BooleanColumn;
use Mediconesystems\LivewireDatatables\Http\Livewire\LivewireDatatable;
class ComplexDemoTable extends LivewireDatatable
{
public $hideable = 'select';
public $exportable = true;
public $complex = true;
public $persistComplexQuery = true;
public $afterTableSlot = 'components.selected';
public function builder()
{
return User::query()->leftJoin('planets', 'planets.id', 'users.planet_id');
}
public function columns()
{
return [
Column::checkbox(),
NumberColumn::name('id')
->label('ID')
->filterable()
->linkTo('user', 6),
Column::name('planets.name')
->label('Planet')
->filterable($this->planets)->alignRight(),
Column::name('planet.region.name')
->label('Region')
->defaultSort('desc')
->filterable($this->regions)
->truncate(8)
->searchable(),
Column::name('name')
->filterable()
->editable(),
Column::name('comrades.name')
->label('Planet Mates')
->truncate()
->filterable(),
Column::name('car.model')
->label('Car')
->alignCenter()
->filterable(['Audi', 'BMW', 'Caterham', 'Dodge', 'Ferrari', 'Jaguar', 'Lamborghini', 'Porsche']),
NumberColumn::name('posts.id:count')
->label('Post Count')
->filterable()
->alignRight(),
Column::name('weapons.name')
->filterable($this->weapons->pluck('name'))
->label('Weapon Names'),
NumberColumn::name('weapons.id')
->filterable()
->exportCallback(function ($value) {
return (string) $value;
})
->label('Weapon Count'),
Column::callback(['id', 'planet.name'], function ($id, $planetName) {
return "User $id hails from $planetName";
})->label('Computed (php closure)')
->filterOn('planets.name')
->filterable($this->planets),
Column::raw('CONCAT("User ", users.id, " hails from ", planets.name) AS planetName')
->label('Computed (raw SQL)')
->filterable(),
BooleanColumn::name('email_verified_at')
->label('Email Verified')
->filterable(),
DateColumn::name('dob')
->label('DOB')
->filterable(),
DateColumn::raw('dob AS dob2')
->label('Birthday')
->format('jS F')
->sortBy(DB::raw('DATE_FORMAT(users.dob, "%m%d%Y")')),
NumberColumn::raw('FLOOR(DATEDIFF(NOW(), users.dob)/365) AS Age')
->filterable(),
NumberColumn::name('planet.orbital_period')
->filterable(),
Column::raw("IF(planets.orbital_period REGEXP '^-?[0-9]+$', CONCAT(ROUND(DATEDIFF(NOW(), users.dob) / planets.orbital_period, 1), ' ', planets.name, ' years'), '---') AS native_age")
->filterable()
->hide(),
TimeColumn::name('bedtime')
->filterable(),
Column::callback('bedtime', 'computeBedtime')
->label('Go to bed')
->hide(),
Column::name('email')
->searchable()
->filterable()
->view('components.email'),
Column::name('bio')
->truncate(20)
->filterable(),
Column::name('role')
->searchable()
->filterable([
'Stormtrooper',
'AT-AT Pilot',
'AT-ST Driver',
'Imperial Guard',
'Shock Trooper',
'Shadow Trooper',
'Purge Trooper',
'Jumptrooper'
]),
Column::scope('selectGroupedWeaponNames', 'Weapons')
->filterable($this->weapons, 'filterWeaponNames'),
BooleanColumn::scope('hasLightSaber', 'Light Saber')
->filterable(null, 'filterHasLightSaber')
];
}
public function getPlanetsProperty()
{
return Planet::pluck('name');
}
public function getRegionsProperty()
{
return Region::pluck('name');
}
public function getWeaponsProperty()
{
return Weapon::all();
}
public function computeBedtime($date)
{
if (!$date) {
return;
}
return Carbon::parse($date)->isPast()
? Carbon::parse($date)->addDay()->diffForHumans(['parts' => 2])
: Carbon::parse($date)->diffForHumans(['parts' => 2]);
}
public function rowClasses($row, $loop)
{
return 'divide-x divide-gray-100 text-sm text-gray-900 ' . ($this->rowIsSelected($row) ? 'bg-yellow-100' : ($row->{'car.model'} === 'Ferrari' ? 'bg-red-500' : ($loop->even ? 'bg-gray-100' : 'bg-gray-50')));
}
public function cellClasses($row, $column)
{
return 'text-sm ' . ($this->rowIsSelected($row) ? ' text-gray-900' : ($row->{'car.model'} === 'Ferrari' ? ' text-white' : ' text-gray-900'));
}
}
app/User.php
<?php
namespace App;
use App\Planet;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, SoftDeletes;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function car()
{
return $this->hasOne(Car::class);
}
public function comrades()
{
return $this->hasManyThrough(User::class, Planet::class, 'id', 'planet_id', 'planet_id', 'id');
}
public function posts()
{
return $this->hasMany(Post::class);
}
public function weapons()
{
return $this->belongsToMany(Weapon::class);
}
public function planet()
{
return $this->belongsTo(Planet::class);
}
public function region()
{
return $this->hasOneThrough(Region::class, Planet::class, 'id', 'id', 'planet_id', 'region_id');
}
public function scopeSelectGroupedWeaponNames($query, $alias)
{
$query->addSelect([
$alias => Weapon::selectRaw('GROUP_CONCAT(name SEPARATOR " | ")')
->leftJoin('user_weapon', 'user_weapon.weapon_id', 'weapons.id')
->whereColumn('user_weapon.user_id', 'users.id')
]);
}
public function scopeFilterWeaponNames($query, $value)
{
$query->whereHas('weapons', function ($query) use ($value) {
$query->where('weapons.id', $value);
});
}
public function scopeHasLightSaber($query, $alias)
{
$query->addSelect([
$alias => Weapon::selectRaw('IF(COUNT(weapons.id), 1, 0)')
->leftJoin('user_weapon', 'user_weapon.weapon_id', 'weapons.id')
->whereColumn('user_weapon.user_id', 'users.id')
->where('weapons.name', 'Light Saber')
]);
}
public function scopeFilterHasLightSaber($query, $value)
{
$query->whereHas('weapons', function ($query) use ($value) {
$query->where('weapons.name', $value ? '=' : '<>', 'Light Saber');
});
}
}