kossmoss/laravel-tagging

使用 PHP 特性来扩展 Laravel Eloquent 模型以允许标签。可以将模型标记为可标记。

4.1.1.001 2022-02-21 15:18 UTC

README

此包旨在增强系统的版主/管理员对标签和标签组的管理。本版本在安全的后台管理区域提供了更多使用可能性。如果您的标签需要由非特权用户管理,请考虑使用 原始包

Latest Stable Version Total Downloads License Build Status Scrutinizer Code Quality

此包不打算以任何方式处理 JavaScript 或 HTML。此包仅处理数据库存储和读写。

在标签中使用的字符没有实际限制。它使用缩写转换来确定两个标签是否相同(“sugar-free”和“Sugar Free”被视为相同的标签)。标签显示名称通过 Str::title() 处理

composer require rtconner/laravel-tagging

安装并运行迁移

在执行 composer update 时,包应该会自动发现。然后发布 tagging.php 并使用以下命令运行数据库迁移。

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

设置您的模型

class Article extends \Illuminate\Database\Eloquent\Model
{
	use \Conner\Tagging\Taggable;
}

快速示例用法

$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

文档:更多用法示例

文档:标签组

文档:标签事件

文档:标签建议

配置

有关配置选项,请参阅 config/tagging.php

Lumen 安装

文档:Lumen

致谢

进一步阅读