emresari89 / laravel-tags
使用PHP特性来扩展Laravel Eloquent模型,以允许使用标签。模型可以被标记为可标记的。
v1.0.1
2021-05-14 20:56 UTC
Requires
- php: ^7.3|^8.0
- illuminate/database: >=8.0
- illuminate/support: >=8.0
Requires (Dev)
- mockery/mockery: 1.*
- orchestra/testbench: 6.*
- phpunit/phpunit: 9.*
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-15 04:36:53 UTC
README
此包不打算以任何方式处理javascript或html。此包只处理数据库存储和读写。
在标签中使用的字符没有真正的限制。它使用slug转换来确定两个标签是否相同("sugar-free"和"Sugar Free"将被视为相同的标签)。标签显示名称会通过Str::title()进行处理
composer require emresari89/laravel-tags
安装然后运行迁移
当您运行composer update时,包应该会自动发现。然后发布tagging.php并使用以下命令运行数据库迁移。
php artisan vendor:publish --provider="Emresari\Tagging\Providers\TaggingServiceProvider"
php artisan migrate
设置您的模型
class Article extends \Illuminate\Database\Eloquent\Model { use \Emresari\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 Emresari\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
配置
Lumen安装
鸣谢
- Emre Sarıoğlu - https://emresarioglu.com.tr