mll-lab / laravel-utils
Shared Laravel utilities of MLL
Installs: 114 047
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^8.2
- 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
- dev-master
- v9.0.0
- v8.0.1
- v8.0.0
- v7.0.0
- v6.0.0
- v5.8.0
- v5.7.0
- v5.6.0
- v5.5.0
- v5.4.0
- v5.3.0
- v5.2.1
- v5.2.0
- v5.1.0
- v5.0.0
- v4.12.1
- v4.12.0
- v4.11.0
- v4.10.0
- v4.9.0
- v4.8.0
- v4.7.0
- v4.6.0
- v4.5.0
- v4.4.0
- v4.3.0
- v4.2.0
- v4.1.0
- v4.0.0
- v3.0.0
- v2.0.0
- v1.0.0
- dev-support-multiple-state-models-by-configuring-in-state-config-instead-of-general-config
- dev-fix-ignore-tests-in-composer-package
This package is auto-updated.
Last update: 2024-11-27 07:39:58 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.