mll-lab / laravel-utils
Shared Laravel utilities of MLL
Installs: 151 069
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 1
Forks: 2
Open Issues: 0
Requires
- php: ^8.2
- illuminate/support: ^11
- mll-lab/php-utils: ^5.2
- mll-lab/str_putcsv: ^1
- ramsey/uuid: ^4.7
- thecodingmachine/safe: ^1 || ^2
Requires (Dev)
- doctrine/dbal: ^3.6
- ergebnis/composer-normalize: ^2
- jangregor/phpstan-prophecy: ^2
- jbzoo/mermaid-php: ^2.3
- larastan/larastan: ^3
- laravel/framework: ^11
- mll-lab/graphql-php-scalars: ^4 || ^5
- mll-lab/php-cs-fixer-config: ^5
- mll-lab/rector-config: ^2
- orchestra/testbench: ^9 || ^10
- phpstan/extension-installer: ^1
- phpstan/phpstan: ^2
- phpstan/phpstan-deprecation-rules: ^2
- phpstan/phpstan-phpunit: ^2
- phpstan/phpstan-strict-rules: ^2
- phpunit/phpunit: ^11.5.10 || ^12
- thecodingmachine/phpstan-safe-rule: ^1.2
Suggests
- jbzoo/mermaid-php: Used for visualization of the transition graph of the model states
This package is auto-updated.
Last update: 2025-02-25 17:57:47 UTC
README
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.