zaimealabs/ranks

The ZaimeaLabs Ranks package.

Fund package maintenance!
Custura

1.0 2024-06-26 13:17 UTC

This package is auto-updated.

Last update: 2025-02-27 13:27:00 UTC


README

Ranks

Ranks for Models

Ranks Tests License

Hey 👋 thanks for considering making a donation, with these donations I can continue working to contribute to ZaimeaLabs projects.

Donate

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'