PHP code example of bogddan / laravel-tablekit

1. Go to this page and download the library: Download bogddan/laravel-tablekit library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bogddan / laravel-tablekit example snippets


use Bogddan\Tablekit\Sortable;

class User extends Model
{
    use Sortable;

    public array $sortable = ['id', 'name', 'email', 'created_at'];
}

public function index(User $user)
{
    $users = $user->sortable()->paginate(25);

    return view('users.index', compact('users'));
}

$user->sortable('name')->paginate();              // name asc
$user->sortable(['name'])->paginate();            // name asc
$user->sortable(['name' => 'desc'])->paginate();  // name desc

// config/tablekit.php
'default_first_column' => true,

class User extends Model
{
    use Sortable;

    public array $sortable = ['id', 'name'];

    /** Relations this model may be sorted through. */
    public array $sortableRelations = ['profile'];

    public function profile(): HasOne
    {
        return $this->hasOne(Profile::class);
    }
}

class Profile extends Model
{
    public array $sortable = ['phone_number', 'address'];
}

class Profile extends Model
{
    public array $sortable = ['phone_number'];
    public array $sortableRelations = ['country'];   // not declared on User
}

class User extends Model
{
    use Sortable;

    public array $sortable = ['name', 'address'];   // "address" ressSortable(Builder $query, string $direction): Builder
    {
        return $query->join('profiles', 'users.id', '=', 'profiles.user_id')
                     ->orderBy('address', $direction)
                     ->select('users.*');
    }
}

class User extends Model
{
    use Sortable;

    public array $sortable = ['id', 'name'];
    public array $sortableAs = ['posts_count', 'nick_name'];
}

$users = $user->withCount('posts')->sortable()->paginate();
$users = $user->select('name as nick_name')->sortable(['nick_name'])->paginate();

'columns' => [
    'alpha'   => ['rows' => ['name', 'email'], 'class' => 'fa fa-sort-alpha'],
    'numeric' => ['rows' => ['id', 'created_at'], 'class' => 'fa fa-sort-numeric'],
],
'asc_suffix'  => '-asc',   // Font Awesome 4; use '-up'   for Font Awesome 5+
'desc_suffix' => '-desc',  // Font Awesome 4; use '-down' for Font Awesome 5+

'anchor_class'                  => 'th-link',
'active_anchor_class'           => 'th-link--active',
'direction_anchor_class_prefix' => 'th-link',   // yields th-link-asc / th-link-desc

'request_persist_ignore' => ['_token', '_method', 'password', 'password_confirmation'],

'request_persist' => ['status', 'search', 'per_page'],

$users = $user->with('profile')->sortable()->paginate();
sh
php artisan vendor:publish --tag=tablekit-config