Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yabhq/laravel-mint
A collection of traits, macros and other helpers to keep your Laravel app feeling fresh.
https://github.com/yabhq/laravel-mint
laravel
Last synced: 29 days ago
JSON representation
A collection of traits, macros and other helpers to keep your Laravel app feeling fresh.
- Host: GitHub
- URL: https://github.com/yabhq/laravel-mint
- Owner: yabhq
- License: mit
- Created: 2020-01-15T16:15:52.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-04-19T21:08:42.000Z (over 1 year ago)
- Last Synced: 2023-09-19T01:20:24.437Z (over 1 year ago)
- Topics: laravel
- Language: PHP
- Homepage:
- Size: 311 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
[![Latest Version on Packagist](https://img.shields.io/packagist/v/yabhq/laravel-mint.svg?style=flat-square)](https://packagist.org/packages/yabhq/laravel-mint)
# 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.
```php
use Yab\Mint\Traits\Archivable;class Example extends Model
{
use Archivable;
}
``````php
$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).
```php
use Yab\Mint\Traits\Immutable;class Example extends Model
{
use Immutable;
}
``````php
// 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:
```php
public function isImmutable()
{
return $this->status === 'closed';
}
```### UUID Models
Easily use UUIDs for your model's primary key by leveraging the UuidModel trait:
```php
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:
```php
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.
```php
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.
```php
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.```php
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!
```php
use Yab\Mint\Trails\HasAvatar;class User extends Model
{
use HasAvatar;
}
```You can customize the database field used to retrieve the profile images:
```php
public function getAvatarField() : string
{
return 'profile_picture';
}
```It is also possible to determine which field is used for the Gravatar email address:
```php
public function getEmailField(): string
{
return 'email';
}
```