veiliglanceren/laravel-morph-categories

A Laravel package to support polymorphic category relationships for any model.

1.0.0 2025-07-21 22:29 UTC

This package is not auto-updated.

Last update: 2025-07-22 01:52:32 UTC


README

Latest Version on Packagist Total Downloads

A Laravel package to add polymorphic category support to any model. Easily attach, detach, sync, and query categories using elegant Eloquent relationships.

๐Ÿš€ Installation

composer require veiliglanceren/laravel-morph-categories

๐Ÿ“ฆ Usage

1. Add Trait to Your Model

use VeiligLanceren\LaravelMorphCategories\Traits\HasCategory;

class Post extends Model
{
    use HasCategory;
}

2. Attach, Detach & Sync Categories

$post = Post::find(1);
$category = Category::create(['name' => 'News']);

$post->attachCategory($category);
$post->detachCategory($category);
$post->syncCategories([$category->id]);

You can also use slugs or IDs:

$post->hasCategory('news'); // by slug
$post->hasCategory($category); // by model
$post->hasCategory($category->id); // by ID

๐Ÿ” Relationships

$post->categories; // Collection of Category models

$category->categoryables; // MorphToMany to all related models

๐Ÿ” Query Scoping

You can query models with specific categories:

Post::withCategory('news')->get();
Post::withCategory($category)->get();

๐Ÿงช Testing

This package uses Pest and Orchestra Testbench:

composer test

Or manually:

vendor/bin/pest

๐Ÿ“„ License

The MIT License (MIT). Please see License File for more information.

๐Ÿ‘ค Author

Developed and maintained by Niels Hamelink at VeiligLanceren.nl.