yabhq / laravel-mint
A collection of traits, macros and other helpers to keep your Laravel app feeling fresh.
Installs: 20 603
Dependents: 1
Suggesters: 0
Security: 0
Stars: 7
Watchers: 3
Forks: 2
Open Issues: 4
Requires
- php: ^8.2|^8.3
- illuminate/support: ^9|^10|^11
- laravel/legacy-factories: ^1.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0
- dev-main
- v1.2
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- v0.20.0
- v0.19.2
- v0.19.1
- v0.19
- v0.18.1
- v0.18.0
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.0
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8
- v0.7
- v0.6
- v0.5
- v0.4
- v0.3
- v0.2
- v0.1
- dev-dependabot/composer/league/commonmark-2.6.0
- dev-dependabot/composer/laravel/framework-11.31.0
- dev-dependabot/composer/symfony/http-foundation-7.1.7
- dev-dependabot/composer/symfony/process-7.1.7
- dev-feat/composer-updates
This package is auto-updated.
Last update: 2024-12-21 17:01:55 UTC
README
Mint for Laravel
A collection of traits, macros and other helpers to keep your Laravel app feeling fresh.
Installation
composer require yabhq/laravel-mint
Archivable
Allow for models to be archived or unarchived based on an "archived_at" field on the database table. A global scope automatically excludes archived records when querying your model.
use Yab\Mint\Traits\Archivable; class Example extends Model { use Archivable; }
$example->archive(); $example->unarchive(); Example::query(); // Will exclude archived items... Example::withArchived(); // With archived items included...
Immutable
Models which are marked as "immutable" will throw an ImmutableDataException if updated or deleted (but not created).
use Yab\Mint\Traits\Immutable; class Example extends Model { use Immutable; }
// No problem $example = Example::create([ 'field' => 'value' ]); // Throws an exception... $example->update([ 'field' => 'updated' ]);
You can also customize the conditions under which a model is immutable by overriding the isImmutable() function on your model:
public function isImmutable() { return $this->status === 'closed'; }
UUID Models
Easily use UUIDs for your model's primary key by leveraging the UuidModel trait:
use Yab\Mint\Traits\UuidModel; class Example extends Model { use UuidModel; }
If you would like to customize the name of the UUID column, simply add the getUuidColumnName function in your model class:
public static function getUuidColumnName(): string { return 'my_column_name'; }
Money Cast
A custom cast for storing monetary values as cents in the database while fetching them as decimal values.
use Yab\Mint\Casts\Money; class Example extends Model { protected $casts = [ 'price' => Money::class, ]; }
Slugify
Create slugs that are unique and never collide with each other.
use Yab\Mint\Trails\Slugify; class Example extends Model { use Slugify }
By default the Slugify trait uses the name property on your model. You can change this behaviour by overriding the getSlugKeyName method on your model.
public static function getSlugKeyName(): string { return 'title'; }
Avatars
The HasAvatar trait allows you to easily support avatars for your users. It even has a built-in Gravatar fallback!
use Yab\Mint\Trails\HasAvatar; class User extends Model { use HasAvatar; }
You can customize the database field used to retrieve the profile images:
public function getAvatarField() : string { return 'profile_picture'; }
It is also possible to determine which field is used for the Gravatar email address:
public function getEmailField(): string { return 'email'; }