zaimealabs / ranks
The ZaimeaLabs Ranks package.
Fund package maintenance!
Custura
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0
Requires (Dev)
- nunomaduro/collision: ^7.0|^8.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- vimeo/psalm: ^5.0
README
Ranks for Models
Hey 👋 thanks for considering making a donation, with these donations I can continue working to contribute to ZaimeaLabs projects.
Support | Function |
---|---|
MySql |
rank() , rankTime() |
MariaDB |
rank() , rankTime() |
Pgsql |
rank() , rankTime() [NotTested] |
Sqlite |
rank() , rankTime() [NotTested] |
SqlServer |
rank() , rankTime() [NotTested] |
Usage
To generate a rank for your model, import the ZaimeaLabs\Ranks\Rank
class and pass along a model or query.
::model()
come as it is.
::query()
allow you to use additional filter like where()
.
->select(['column'])
to group your result.
$model = Rank::model(Match::class) ->between( start: now()->startOfYear(), end: now()->endOfYear(), ) ->select(['user_id']) ->rank('scored'); $query = Rank::query(Match::whereNotNull('user_id')) ->between( start: now()->startOfYear(), end: now()->endOfYear(), ) ->select(['user_id']) ->rank('scored') $query = Rank::query(Match::where('type', 'csgo')) ->dateColumn('played_at') ->between( start: now()->startOfYear(), end: now()->endOfYear()) ->select(['user_id']) ->rankTime('duration');
Select Column
To select columns just use select(['name'])
->select(['name', 'csgo'])
Date Column
If your column is not created_at
just use dateColumn('pointed_date_column')
->dateColumn('pointed_date_column')
Rank Alias
You can set custom rank alias:
->rankAlias('score_rank')
Sum Alias
You can set custom sum alias:
->sumAlias('score_sum')
Ranks
You can use the following ranks:
Function | Parameter |
---|---|
->rank() |
'column' |
->rankTime() |
'column' |