Code Monkey home page Code Monkey logo

laravel-tagging's Introduction

Laravel Taggable Trait

Latest Stable Version Total Downloads License Build Status

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()

Laravel/Lumen 5 Documentation Laravel 4 Documentation

Composer Install (for Laravel 5+/Lumen 5)

composer require rtconner/laravel-tagging "~2.2"

Install and then Run the migrations

The service provider does not load on every page load, so it should not slow down your app. In config/app.php You may add the the TaggingServiceProvider in the providers array as follows:

If you're using Laravel 5.5+ let the package auto discovery make this for you.

'providers' => [
	\Conner\Tagging\Providers\TaggingServiceProvider::class,
];

Then publish the configurations and migrations by:

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

Lumen does not have a vendor:publish command, so you will need to create or copy the provided migrations and config file into their respective directory.

In app\bootstrap\app.php

// Add this line in your config section
$app->configure('tagging');
// Add this line in your service provider section
$app->register(Conner\Tagging\Providers\LumenTaggingServiceProvider::class);

After these two steps are done, you can edit config/tagging.php with your prefered settings.

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

More examples in the documentation

Tag Groups

You can create groups with the following artisan command

php artisan tagging:create-group MyTagGroup

Set the tag group for a tag

$tag->setGroup('MyTagGroup');

To get all the tags in a certain group

Tag::inGroup('MyTagGroup')->get()

Check if a tag is in a group

$tag->isInGroup('MyTagGroup');

Configure

See config/tagging.php for configuration options.

Further Documentation

See the docs/ folder for more documentation.

Upgrading Laravel 4 to 5

This library stores full model class names into the database. When you upgrade laravel and you add namespaces to your models, you will need to update the records stored in the database. Alternatively you can override Model::$morphClass on your model class to match the string stored in the database.

Credits

Further Reading

laravel-tagging's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.