Package Data | |
---|---|
Maintainer Username: | sildraug |
Maintainer Contact: | info@waavi.com (Waavi) |
Package Create Date: | 2016-01-05 |
Package Last Update: | 2016-10-23 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-11 15:18:21 |
Package Statistics | |
---|---|
Total Downloads: | 4,884 |
Monthly Downloads: | 1 |
Daily Downloads: | 0 |
Total Stars: | 3 |
Total Watchers: | 2 |
Total Forks: | 1 |
Total Open Issues: | 0 |
This package allows you to easily add tags to Eloquents models. Inspired by the handy cviebrock/eloquent-taggable package.
WAAVI is a web development studio based in Madrid, Spain. You can learn more about us at waavi.com
Laravel | tagging :---------|:---------- 5.1.x | 1.0.x 5.2.x | 1.0.7 and higher 5.3.x | 2.0 and higher
Require through composer
composer require waavi/tagging ^2.0
Or manually edit your composer.json file:
"require": {
"waavi/tagging": "^2.0"
}
Add the following entry to the end of the providers array in app/config.php:
Waavi\Tagging\TaggingServiceProvider::class,
If you do not use Eloquent-Sluggable or Waavi\Translation you will also need to add:
Cviebrock\EloquentSluggable\SluggableServiceProvider::class,
Waavi\Translation\TranslationServiceProvider::class,
Publish the configuration file and run the migrations:
php artisan vendor:publish --provider="Waavi\Tagging\TaggingServiceProvider"
php artisan migrate
Now you can edit config/tagging.php with your settings.
Version 2.x is not backwards compatible with 1.x. You will need to fully remove v1, delete the migrations, and then re-install from scratch.
You may find the configuration file at config/tagging
return [
// Remove all the tag relations on model delete
'on_delete_cascade' => true,
// If you want your tag names to be translatable using waavi/translation, set to true.
'translatable' => false,
// All tag names will be trimed and normalized using this function:
'normalizer' => 'mb_strtolower',
];
Your models should implement Taggable's interface and use its trait:
use Waavi\Tagging\Traits\Taggable;
class Post extends Model
{
use Taggable;
}
Add tags to an existing model without removing existing ones:
// Tag with a comma separated list of tags:
$model->tag('apple,orange');
// Tag with an array of tags:
$model->tag(['apple', 'orange']);
Replace existing tags by the given ones in an existing model:
// Tag with a comma separated list of tags:
$model->retag('apple,orange');
// Tag with an array of tags:
$model->retag(['apple', 'orange']);
Remove tags from an existing model:
// Remove tags with a comma separated list:
$model->untag('apple,orange');
// Remove tags with an array of tags:
$model->untag(['apple', 'orange']);
Remove all tags from an existing model:
$model->detag();
Get tags:
// As comma separated list:
$model->tagNames;
// As array ['apple', 'orange']:
$model->tagArray;
// Get a list of all of the tags ever applied to any model of the same class: ['apple', 'orange', 'strawberry']
$model->availableTags();
Get by tag:
// Get entries that have ALL of the given tags:
$model->withAllTags('apple, orange');
$model->withAllTags(['apple', 'orange']);
// Get entries that have ANY of the given tags:
$model->withAnyTags('apple, orange');
$model->withAnyTags(['apple', 'orange']);
// Get a list of all of the tags ever applied to any model of the same class: ['apple', 'orange', 'strawberry']
$model->availableTags();