mll-lab / laravel-utils
Shared Laravel utilities of MLL
Installs: 106 199
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- illuminate/support: ^9.51 || ^10 || ^11
- mll-lab/php-utils: ^1.13 || ^2 || ^3 || ^4 || ^5
- 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: ^1
- jbzoo/mermaid-php: ^2.3
- larastan/larastan: ^2
- laravel/framework: ^9 || ^10 || ^11
- mll-lab/graphql-php-scalars: ^4 || ^5
- mll-lab/php-cs-fixer-config: ^5
- mll-lab/rector-config: ^2
- orchestra/testbench: ^7.7 || ^8 || ^9
- phpstan/extension-installer: ^1
- phpstan/phpstan-deprecation-rules: ^1
- phpstan/phpstan-phpunit: ^1
- phpstan/phpstan-strict-rules: ^1
- phpunit/phpunit: ^9 || ^10 || ^11
- 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: 2024-11-19 16:49:24 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.