vendocrat / laravel-tags
Simple way to tag Eloquent models in Laravel.
Requires
- php: ^7.2.5|^8.0
- cviebrock/eloquent-sluggable: ^6.0|^7.0|^8.0
- illuminate/database: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
- doctrine/dbal: ^2.12
- laravel/framework: ^6.0|^7.0|^8.0
- mockery/mockery: ~1.0
- orchestra/testbench: ^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
This package is not auto-updated.
Last update: 2022-02-01 12:50:53 UTC
README
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.