Skip to content

Simple way to tag Eloquent models in Laravel.

License

Notifications You must be signed in to change notification settings

Lecturize/Laravel-Tags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.