Skip to content

mwikberg-virta/laravel-utils

 
 

Repository files navigation

laravel-utils

Continuous Integration Code Coverage

Latest Stable Version Total Downloads

Shared Laravel utilities of MLL

Installation

Install through composer

composer require mll-lab/laravel-utils

Usage

See tests.

Autoincrement

Allows the creation of incrementing IDs without actually using autoincrement.

Extend the class Autoincrement with a descriptive name for your ID.

use MLL\LaravelUtils\Database\Autoincrement;

final class MaxFooId extends Autoincrement
{
    public static function name(): string
    {
        return 'max_foo_id';
    }
}

Generate a migration and call the createTable() method in it:

public function up() {
    MaxFooId::createTable();
}

To use this ID in your model, set $incrementing to false and assign the ID to your model in the booted() method:

public $incrementing = false;

protected static function booted(): void
{
    self::creating(function (self $instance): void {
        $instance->id ??= MaxFooId::next();
    });

Conditional Migrations

To run a migration conditionally, implement the MLL\LaravelUtils\Database\ConditionalMigration interface and its ->shouldRun() method in your migration:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Carbon;
use MLL\LaravelUtils\Database\ConditionalMigration

return new class extends Migration implements ConditionalMigration {
    public function up(): void
    {
        // Something that would put intense strain on the database
    }

    public function shouldRun(): bool
    {
        $currentHour = Carbon::now()->hour;

        // Only run between 01:00 and 03:00
        return $currentHour > 1 && $currentHour < 3;
    }
};

Strict Stubs

To continually keep your stubs updated with the latest and greatest from this package, add /stubs to your .gitignore and add the following to your composer.json:

    "scripts": {
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
+           "@php artisan vendor:publish --tag=strict-stubs --force"
        ]
    }

Changelog

See CHANGELOG.md.

Contributing

See CONTRIBUTING.md.

License

This package is licensed using the MIT License.

About

Shared Laravel utilities of MLL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 96.4%
  • Makefile 2.2%
  • Dockerfile 1.4%