The Laravel Taxonomy package manages categories, tags, and hierarchical structures in Laravel applications. Taxonomy is ideal for category management, organizing content, product attributes, or any hierarchical data structure. Here's a quick example of creating taxonomies and associating them with an Eloquent model:
use Aliziodev\LaravelTaxonomy\Facades\Taxonomy;use Aliziodev\LaravelTaxonomy\Enums\TaxonomyType; // Create a category$electronics = Taxonomy::create([ 'name' => 'Electronics', 'type' => TaxonomyType::Category->value, 'description' => 'Electronic products and gadgets',]); // Create a subcategory$smartphones = Taxonomy::create([ 'name' => 'Smartphones', 'type' => TaxonomyType::Category->value, 'parent_id' => $electronics->id,]); // Create tags$featured = Taxonomy::create([ 'name' => 'Featured', 'type' => TaxonomyType::Tag->value,]); // Assuming you have a Product model with HasTaxonomy trait$product = Product::create([ 'name' => 'iPhone 15 Pro', 'price' => 999.99,]); // Attach taxonomies$product->attachTaxonomies([$electronics->id, $smartphones->id, $featured->id]);
After attaching taxonomies to a product model, here's how you might query products with the same category:
// Find products in the electronics category$products = Product::withTaxonomyType(TaxonomyType::Category) ->withTaxonomySlug('electronics') ->get(); // See if a product has given taxonomies$product->hasTaxonomies($categoryIds);$product->hasAllTaxonomies($tagIds);$product->hasTaxonomyType(TaxonomyType::Category);
This is just a taste of all the features this package provides. For in-depth examples and complete documentation, check out the package's readme file. The readme covers setup, configuration, and examples of the package's main features, which include:
Main Features
- Hierarchical Terms: Create parent-child relationships between terms
- Metadata Support: Store additional data as JSON with each taxonomy
- Term Ordering: Control the order of terms with sort_order
- Polymorphic Relationships: Associate taxonomies with any model
- Multiple Term Types: Use predefined types (Category, Tag, etc.) or create custom types
- Bulk Operations: Attach, detach, sync, or toggle multiple taxonomies at once
- Advanced Querying: Filter models by taxonomies with query scopes
- Efficient Queries: Optimized database queries for hierarchical data
- Testing Support: Built-in testing utilities
- And more...
🧑💻 You can get started with this package on GitHub: aliziodev/laravel-taxonomy.
composer require aliziodev/laravel-taxonomyphp artisan taxonomy:installphp artisan migrate