laravel-toolbox maintained by mimisk
toolbox
Minimal Laravel 12/13 package scaffold for reusable toolbox utilities.
Requirements
- PHP 8.4+
- Laravel 12 or 13
Installation
composer require mimisk/laravel-toolbox
Laravel auto-discovers the package service provider.
Trait Columns
| Trait | Required Columns (default) | Custom method |
|---|---|---|
HasSlug |
slug + source column title |
getSlugColumn(), getSlugSourceColumn() |
HasCode |
code |
getCodeColumn(), getCodePrefix(), getCodeSeparator(), getCodePadding(), getCodeStartNumber() |
HasUuid |
uuid |
getUuidColumn() |
HasUlid |
ulid |
getUlidColumn() |
HasActiveFlag |
is_active (boolean) |
getActiveFlagColumn() |
HasPublishedState |
published_at (datetime/timestamp nullable) |
getPublishedAtColumn() |
HasArchivedState |
archived_at (datetime/timestamp nullable) |
getArchivedAtColumn() |
HasMetaData |
metadata (json nullable) |
getMetaDataColumn() |
HasSortOrder |
sort_order (integer nullable) |
getSortOrderColumn() |
Included Traits
HasSlug
Automatically generates a slug on model creation from a source attribute (default source: title, target column: slug).
use Mimisk\LaravelToolbox\Traits\HasSlug;
class Post extends Model
{
use HasSlug;
protected function getSlugSourceColumn(): string
{
return 'name';
}
}
HasCode
Automatically generates incremental codes on model creation (default column: code, default format: 000001, 000002, ...).
use Mimisk\LaravelToolbox\Traits\HasCode;
class Invoice extends Model
{
use HasCode;
protected function getCodePrefix(): string
{
return 'INV';
}
protected function getCodePadding(): int
{
return 5;
}
}
HasUuid
Automatically sets a UUID on model creation (default column: uuid).
use Mimisk\LaravelToolbox\Traits\HasUuid;
class Invoice extends Model
{
use HasUuid;
}
HasUlid
Automatically sets a ULID on model creation (default column: ulid).
use Mimisk\LaravelToolbox\Traits\HasUlid;
class Ticket extends Model
{
use HasUlid;
}
HasActiveFlag
Adds active/inactive scopes and helpers for boolean flags (default column: is_active).
use Mimisk\LaravelToolbox\Traits\HasActiveFlag;
class Stage extends Model
{
use HasActiveFlag;
}
$activeStages = Stage::active()->get();
$stage->deactivate();
HasPublishedState
Adds published/unpublished scopes and helpers using a datetime field (default column: published_at).
use Mimisk\LaravelToolbox\Traits\HasPublishedState;
class Article extends Model
{
use HasPublishedState;
}
$published = Article::published()->get();
$article->markAsPublished();
HasArchivedState
Adds archived/unarchived scopes and helpers using a datetime field (default column: archived_at).
use Mimisk\LaravelToolbox\Traits\HasArchivedState;
class Event extends Model
{
use HasArchivedState;
}
$archived = Event::archived()->get();
$event->markAsArchived();
HasMetaData
Adds helpers for structured metadata access via an array-cast attribute (default column: metadata).
use Mimisk\LaravelToolbox\Traits\HasMetaData;
class Product extends Model
{
use HasMetaData;
}
$product->setMeta('shipping.weight', 2.4)->save();
$weight = $product->getMeta('shipping.weight');
HasSortOrder
Automatically sets incremental sort order on create and provides an ordered scope (default column: sort_order).
use Mimisk\LaravelToolbox\Traits\HasSortOrder;
class MenuItem extends Model
{
use HasSortOrder;
}
$items = MenuItem::ordered()->get();
Testing
composer test
Static Analysis
composer analyse