Sports Standings Tables by Group

Filament 3

Tables for the data of sports competition: tournament standings tables by groups.

19-sports-standings-table

Get the Source Code:

Only This Example

$9

One-time payment

Full source code for Sports Standings Tables by Group
Downloadable ZIP file with the source code
Lifetime access to this example
GitHub Sign in with GitHub to buy

Sign in first, then complete your $9 checkout.

Best value — all 169 examples

FilamentExamples Membership

$99 /year
or
$199 lifetime
Access to code of all 169 examples
Future new examples and updates included
FilaCheck Pro package licence included
MCP server included
View membership plans

30-day money-back guarantee

How it works

The main logic here lives in a custom page with a custom Livewire component that houses a Filament table:

  • We have created a simple Filament Page called "Groups Overview"
  • That page loads the initial groups and runs a foreach loop to display a Livewire component for each group
  • Livewire component loads details about the group and all the teams
  • It forms a Filament table and displays that table on the page
  • There is a modified database query to order our teams by the score they have (one win = 2 points, one loss = 1 point)
  • The table has quite a few custom column implementations that mutate the data to achieve the desired result
    • The Order column has a custom implementation that displays a badge for X amount of places (configured in the config file)
    • The Name column has a prefix that displays the team flag
    • The Matches Played column counts how many games were played in real time
    • Wins and Losses columns count how many games were won/lost in real-time
    • The Total Points column sums up the scored vs. missed points from the format X:Y in real-time
    • Points calculates points in real-time for display (this could be extracted to the database, but we kept it as an example!)
    • Badges uses a clever Blade injection to display Filament badges based on W or L per each game.

Here's what that looks like in our code:

app/Filament/Pages/GroupsOverview.php

use App\Models\Group;
use Filament\Pages\Page;
 
class GroupsOverview extends Page
{
protected static ?string $navigationIcon = 'heroicon-o-document-text';
 
protected static string $view = 'filament.pages.groups-overview';
 
protected function getViewData(): array
{
return [
// This adds the group data to our views
'groups' => Group::all()
];
}
}

Its view is quite simple:

resources/views/filament/pages/groups-overview.blade.php

<x-filament-panels::page>
@foreach($groups as $group)
 
 
// ...
The FULL tutorial is available after the purchase: in the Readme file of the official repository you would get invited to.