This package manages categories in a shared table
This package currently requires Laravel >= 5.0
require by packagist
composer require JLeonardoLemos/categories
composer require JLeonardoLemos/categories
Add service provider on array in app.php
'JLeonardoLemos\Categories\Providers\CategoriesServiceProvider',
Or
JLeonardoLemos\Categories\Providers\CategoriesServiceProvider::class,
Configure your model
use JLeonardoLemos\Categories\CategoryableContract;
use JLeonardoLemos\Categories\CategoryableTrait;
class ModelName extends Model implements CategoryableContract
{
use CategoryableTrait;
On views
{!! Category::select('Categoria', 'group_slug') !!}
Obs: use group slug to bring only a specific category group
publish migrations
php artisan vendor:publish
run migrations
php artisan migrate
Seed your categories table, you can to use any Eloquent method to handle this categories
Category::create([
'name' => 'category 1'
, 'group_slug' => 'group 1'
, 'description' => ''
]);
Category::create([
'name' => 'category 2'
, 'group_slug' => 'group 1'
, 'description' => ''
]);
Obs: The categories are grouped by group_slug
You must to create the relationship with category table only once
$model->categoriesSet()->create([
'category_id' => 1
]);
If the relationship is created, you can update it
$categoriesSet = $new->categoriesSet()->first();
$categoriesSet->category_id = 4;
$categoriesSet->save();
Access the category
$model->category
The category model has a category_id attribute, this is the parent category id
To access the parent of a given model
Category::first()->daddy
To access the children
Category::first()->dearChildren