banulalakwindu / laravel-column-helpers
Laravel traits and migration macros for common model columns.
1.0.1
2025-08-27 07:30 UTC
Requires
- php: ^8.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- spatie/laravel-sluggable: ^3.0
README
A Laravel package providing useful traits and migration macros for common model columns.
Installation
composer require banulalakwindu/laravel-column-helpers
Features
Migration Macros
Active Column
Schema::table('posts', function (Blueprint $table) { $table->activeColumn(); // Adds is_active boolean column with default true });
Featured Column
Schema::table('posts', function (Blueprint $table) { $table->featuredColumn(); // Adds is_featured boolean column with default false });
Meta Columns
Schema::table('posts', function (Blueprint $table) { $table->metaColumns(); // Adds meta_title, meta_description, meta_keywords, meta_image });
Slug Columns
Schema::table('posts', function (Blueprint $table) { $table->slugColumns(); // Adds name and slug columns $table->slugColumns('title'); // Adds title and slug columns });
Sort Order Column
Schema::table('posts', function (Blueprint $table) { $table->sortOrderColumn(); // Adds sort_order integer column with default 0 });
Model Traits
HasActiveColumn
use BanulaLakwindu\ColumnHelpers\Traits\HasActiveColumn; class Post extends Model { use HasActiveColumn; } // Usage $post->isActive(); $post->markActive(); $post->markInactive(); Post::active()->get(); // Scope
HasFeaturedColumn
use BanulaLakwindu\ColumnHelpers\Traits\HasFeaturedColumn; class Post extends Model { use HasFeaturedColumn; } // Usage $post->isFeatured(); $post->markFeatured(); $post->markUnfeatured(); Post::featured()->get(); // Scope
HasMetaColumns
use BanulaLakwindu\ColumnHelpers\Traits\HasMetaColumns; class Post extends Model { use HasMetaColumns; }
HasSlugColumns
use BanulaLakwindu\ColumnHelpers\Traits\HasSlugColumns; class Post extends Model { use HasSlugColumns; protected function slugSourceColumn(): string { return 'title'; } protected function getSlugColumnCommentCacheDuration(): int { return 7 * 24 * 60 * 60; // 7 days in seconds } }
Override Functions:
-
slugSourceColumn()
: Required override - Specifies which column to use as the source for generating slugs. If not overridden, the trait will auto-detect the slug source column from database comments every time (caching is needed). -
getSlugColumnCommentCacheDuration()
: Optional override - Sets cache duration for slug source column detection. Default is 7 days. Only used whenslugSourceColumn()
is not overridden.
HasSortOrderColumn
use BanulaLakwindu\ColumnHelpers\Traits\HasSortOrderColumn; class Post extends Model { use HasSortOrderColumn; } // Usage $post->getSortOrder(); $post->setSortOrder(5); $post->moveBefore($otherPost); $post->moveAfter($otherPost); Post::orderBySortOrder()->get(); // Scope Post::orderBySortOrderDesc()->get(); // Scope
Requirements
- PHP 8.0+
- Laravel 10.0+
License
MIT License