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-taxonomy php artisan taxonomy:install php artisan migrate