LaravelPackages.net
Acme Inc.
Toggle sidebar
rtconner/laravel-tagging

Use PHP traits to extend Laravel Eloquent Models to allow Tags. Models can be marked as Taggable.

3.133.193
884
6.0.0
About rtconner/laravel-tagging

rtconner/laravel-tagging is a Laravel package for use php traits to extend laravel eloquent models to allow tags. models can be marked as taggable.. It currently has 884 GitHub stars and 3.133.193 downloads on Packagist (latest version 6.0.0). Install it with composer require rtconner/laravel-tagging. Discover more Laravel packages by rtconner or browse all Laravel packages to compare alternatives.

Last updated

Laravel Taggable Trait

Tests Latest Stable Version Total Downloads License

This package is not meant to handle javascript or html in any way. This package handles database storage and read/writes only.

There are no real limits on what characters can be used in a tag. It uses a slug transform to determine if two tags are identical ("sugar-free" and "Sugar Free" would be treated as the same tag). Tag display names are run through Str::title()

composer require rtconner/laravel-tagging

Install and then Run the migrations

The package should auto-discover when you composer update. Then publish the tagging.php and run the database migrations with these commands.

php artisan vendor:publish --provider="Conner\Tagging\Providers\TaggingServiceProvider"
php artisan migrate

Setup your models

class Article extends \Illuminate\Database\Eloquent\Model
{
	use \Conner\Tagging\Taggable;
}

Quick Sample Usage

$article = Article::with('tagged')->first(); // eager load

foreach($article->tags as $tag) {
	echo $tag->name . ' with url slug of ' . $tag->slug;
}

$article->tag('Gardening'); // attach the tag

$article->untag('Cooking'); // remove Cooking tag
$article->untag(); // remove all tags

$article->retag(array('Fruit', 'Fish')); // delete current tags and save new tags

$article->tagNames(); // get array of related tag names

Article::withAnyTag(['Gardening','Cooking'])->get(); // fetch articles with any tag listed

Article::withAllTags(['Gardening', 'Cooking'])->get(); // only fetch articles with all the tags

Article::withoutTags(['Gardening', 'Cooking'])->get(); // only fetch articles without all tags listed

Conner\Tagging\Model\Tag::where('count', '>', 2)->get(); // return all tags used more than twice

Article::existingTags(); // return collection of all existing tags on any articles

Documentation: More Usage Examples

Documentation: Tag Groups

Documentation: Tagging Events

Documentation: Tag Suggesting

Configure

See config/tagging.php for configuration options.

Developer

  • Robert Conner - http://dealerzone.com
  • BlueSky - https://bsky.app/profile/robertconner.com

Star History Chart