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.
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.
Perferendis dolores...Perferendis dolores maiores necessitatibus molestiae vel doloremque exercitationem. Ut ut qui et eligendi vel doloremque et.
Perferendis ducimus neque ut. Nihil sapiente consequuntur ut earum laudantium necessitatibus sed libero.
Omnis temporibus aut...Omnis temporibus aut reiciendis eaque. Cupiditate modi placeat illo. Quod modi ipsum quisquam facilis tempora.
Aut facilis nihil libero blanditiis recusandae. Iste eum mollitia est dolores beatae assumenda. Est cumque quasi aliquid rerum voluptatem id. Repellendus ab voluptatem ut.
Qui magnam eaque rep...Qui magnam eaque repudiandae voluptates molestias quo voluptas repellendus. Et labore quisquam recusandae aut inventore qui ea. Et earum voluptatem et. Consequatur perferendis voluptatem numquam qui explicabo aliquid et.
Recusandae est vel et eius. Sunt fugit autem magnam. Et aut voluptas veritatis repellendus qui. Iure consequatur architecto ab nemo et aspernatur laborum.
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.
Arno Kuphal, Chr...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 Feest 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 Wuckertefeffeefefefe, Reyes Nader, sdasd-123, 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.
Quis rerum omnis ad...Quis rerum omnis ad consequatur. Totam quisquam maiores natus sint et saepe eligendi.
Unde reprehenderit autem ut odio vel. Et voluptatem labore aliquid praesentium non. Eaque iusto sunt consequatur aut. Praesentium autem fugiat sed reiciendis.
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.
Veritatis nisi at vo...Veritatis nisi at voluptas quasi corporis numquam. Doloremque expedita magnam aspernatur non. Reprehenderit quis quia sed quia ut nesciunt similique. Debitis molestiae accusantium aut aut quis ea quidem.
Optio unde expedita possimus reiciendis cumque aperiam aut et. Commodi laudantium voluptas et autem quas enim. Accusamus reprehenderit ipsa eum. Fugit quis est exercitationem eius.
Shock Trooper
Previous
Results 1 - 10 of
1989
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');
});
}
}