Laravel 9 – 10
PHP 8.0+
No commit activity in last 2 years
No release in over 2 years
Simple way to tag Eloquent models in Laravel.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

mockery/mockery
^1.4
phpunit/phpunit
^8.0|^9.0|^10.0

Runtime

 Project Readme

Latest Stable Version Total Downloads License

Laravel Tags

Simple way to tag eloquent models in Laravel.

Installation

Require the package from your composer.json file

"require": {
    "lecturize/laravel-tags": "^1.0"
}

and run $ composer update or both in one with $ composer require lecturize/laravel-tags.

Configuration & Migration

$ php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
$ php artisan vendor:publish --provider="Lecturize\Tags\TagsServiceProvider"

This will publish a config/sluggable.php, a config/lecturize.php and some migration files, that you'll have to run:

$ php artisan migrate

For migrations to be properly published ensure that you have added the directory database/migrations to the classmap in your projects composer.json.

Usage

First, add our HasTags trait to your model.

<?php

namespace App\Models;

use Lecturize\Tags\Traits\HasTags;

class Post extends Model
{
    use HasTags;

    // ...
}
?>
Get all tags for a model
$tags = $model->tags();
Check if model is tagged with a given tag
$tags = $model->hasTag('Check');
Add one or more tags
$tags = $model->tag('My First Tag');
$tags = $model->tag(['First', 'Second', 'Third']);
Remove given tags from model
$tags = $model->untag('Remove');
Replace all existing tags for a model with new ones
$tags = $model->retag('A New Tag');
$tags = $model->retag(['Fourth', 'Fifth', 'Sixth']);
Remove all existing tags from model
$tags = $model->detag();
Get a list of all tags
$tags = $model->listTags();

This is a convenience method for $model->tags->pluck('tag')

Scopes

There are two scopes included to fluently query models (e.g. Posts) with given tags.

$posts = Post::withTag('My First Tag')->get();
$posts = Post::withTags(['First', 'Second', 'Third'])->get();

License

Licensed under MIT license.

Author

Handcrafted with love by Alexander Manfred Poellmann in Vienna & Rome.