https://github.com/rtconner/laravel-tagging
Tag support for Laravel Eloquent models - Taggable Trait
https://github.com/rtconner/laravel-tagging
Last synced: 8 months ago
JSON representation
Tag support for Laravel Eloquent models - Taggable Trait
- Host: GitHub
- URL: https://github.com/rtconner/laravel-tagging
- Owner: rtconner
- License: mit
- Created: 2014-01-07T02:14:49.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2025-04-02T18:16:27.000Z (9 months ago)
- Last Synced: 2025-05-04T21:36:31.697Z (8 months ago)
- Language: PHP
- Homepage:
- Size: 274 KB
- Stars: 885
- Watchers: 28
- Forks: 170
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-laravel - Laravel Taggable Trait - Trait and library to support managing tags on your models. \[10/15/2016\] (Packages / Helpers/General)
- awesome-php - rtconner/laravel-tagging - 为 Eloquent 模型增加打标签功能 (数据库( Database ))
- awesome-laravel - Laravel Taggable Trait - Trait and library to support managing tags on your models. \[10/15/2016\] (Packages / Helpers/General)
README
Laravel Taggable Trait
============
[](https://packagist.org/packages/rtconner/laravel-tagging)
[](https://packagist.org/packages/rtconner/laravel-tagging)
[](https://packagist.org/packages/rtconner/laravel-tagging)
[](https://scrutinizer-ci.com/g/rtconner/laravel-tagging/?branch=master)
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()
```bash
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.
```bash
php artisan vendor:publish --provider="Conner\Tagging\Providers\TaggingServiceProvider"
php artisan migrate
```
#### Setup your models
```php
class Article extends \Illuminate\Database\Eloquent\Model
{
use \Conner\Tagging\Taggable;
}
```
#### Quick Sample Usage
```php
$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](docs/usage-examples.md)
[Documentation: Tag Groups](docs/tag-groups.md)
[Documentation: Tagging Events](docs/events.md)
[Documentation: Tag Suggesting](docs/suggesting.md)
### Configure
[See config/tagging.php](config/tagging.php) for configuration options.
###### Lumen Installation
[Documentation: Lumen](docs/lumen.md)
#### Developer
- Robert Conner - http://dealerzone.com
- BlueSky - https://bsky.app/profile/robertconner.com