spatie / laravel-tags
为您的Laravel应用添加标签和可标记行为
Requires
- php: ^8.0
- laravel/framework: ^8.67|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.63|^3.0
- spatie/eloquent-sortable: ^3.10|^4.0
- spatie/laravel-package-tools: ^1.4
- spatie/laravel-translatable: ^4.6|^5.0|^6.0
Requires (Dev)
- orchestra/testbench: ^6.13|^7.0|^8.0|^9.0
- pestphp/pest: ^1.22|^2.0
- phpunit/phpunit: ^9.5.2
- dev-main
- 4.6.1
- 4.6.0
- 4.5.2
- 4.5.1
- 4.5.0
- 4.4.0
- 4.3.7
- 4.3.6
- 4.3.5
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.4.1
- 1.4.0
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.1
- dev-dependabot/github_actions/dependabot/fetch-metadata-2.1.0
This package is auto-updated.
Last update: 2024-09-20 13:51:16 UTC
README
本包为您的模型提供可标记行为。安装包后,您只需将HasTags
特性添加到Eloquent模型中,使其可标记。
但我们的功能不仅限于常规的标签功能。Laravel Tags内置了翻译标签、多种标签类型和排序功能。
您可以在https://spatie.be/docs/laravel-tags上找到文档。
以下是代码示例
// apply HasTags trait to a model use Illuminate\Database\Eloquent\Model; use Spatie\Tags\HasTags; class NewsItem extends Model { use HasTags; // ... }
// create a model with some tags $newsItem = NewsItem::create([ 'name' => 'The Article Title', 'tags' => ['first tag', 'second tag'], //tags will be created if they don't exist ]); // attaching tags $newsItem->attachTag('third tag'); $newsItem->attachTag('third tag','some_type'); $newsItem->attachTags(['fourth tag', 'fifth tag']); $newsItem->attachTags(['fourth_tag','fifth_tag'],'some_type'); // detaching tags $newsItem->detachTag('third tag'); $newsItem->detachTag('third tag','some_type'); $newsItem->detachTags(['fourth tag', 'fifth tag']); $newsItem->detachTags(['fourth tag', 'fifth tag'],'some_type'); // get all tags of a model $newsItem->tags; // syncing tags $newsItem->syncTags(['first tag', 'second tag']); // all other tags on this model will be detached // syncing tags with a type $newsItem->syncTagsWithType(['category 1', 'category 2'], 'categories'); $newsItem->syncTagsWithType(['topic 1', 'topic 2'], 'topics'); // retrieving tags with a type $newsItem->tagsWithType('categories'); $newsItem->tagsWithType('topics'); // retrieving models that have any of the given tags NewsItem::withAnyTags(['first tag', 'second tag'])->get(); // retrieve models that have all of the given tags NewsItem::withAllTags(['first tag', 'second tag'])->get(); // retrieve models that don't have any of the given tags NewsItem::withoutTags(['first tag', 'second tag'])->get(); // translating a tag $tag = Tag::findOrCreate('my tag'); $tag->setTranslation('name', 'fr', 'mon tag'); $tag->setTranslation('name', 'nl', 'mijn tag'); $tag->save(); // getting translations $tag->translate('name'); //returns my name $tag->translate('name', 'fr'); //returns mon tag (optional locale param) // convenient translations through taggable models $newsItem->tagsTranslated();// returns tags with slug_translated and name_translated properties $newsItem->tagsTranslated('fr');// returns tags with slug_translated and name_translated properties set for specified locale // using tag types $tag = Tag::findOrCreate('tag 1', 'my type'); // tags have slugs $tag = Tag::findOrCreate('yet another tag'); $tag->slug; //returns "yet-another-tag" // tags are sortable $tag = Tag::findOrCreate('my tag'); $tag->order_column; //returns 1 $tag2 = Tag::findOrCreate('another tag'); $tag2->order_column; //returns 2 // manipulating the order of tags $tag->swapOrder($anotherTag);
Spatie是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里。
支持我们
我们在创建最佳开源包上投入了大量资源。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从您的家乡寄给我们明信片,说明您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
要求
本包需要Laravel 8或更高版本,PHP 8或更高版本,以及支持json
字段和MySQL兼容函数的数据库。
安装
您可以通过Composer安装此包
composer require spatie/laravel-tags
包将自动注册自己。
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="Spatie\Tags\TagsServiceProvider" --tag="tags-migrations"
发布迁移后,您可以通过运行迁移来创建tags
和taggables
表
php artisan migrate
您可以选择使用以下命令发布配置文件
php artisan vendor:publish --provider="Spatie\Tags\TagsServiceProvider" --tag="tags-config"
这是发布配置文件的内容
return [ /* * The given function generates a URL friendly "slug" from the tag name property before saving it. * Defaults to Str::slug (https://laravel.net.cn/docs/5.8/helpers#method-str-slug) */ 'slugger' => null, ];
文档
您可以在https://spatie.be/docs/laravel-tags/v4上找到文档。
如果您在使用包时遇到困难,发现了错误,或者对laravel-tags
包有一般性问题或改进建议,请随时在GitHub上创建问题,我们会尽快处理。
如果您发现了关于安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。
测试
- 将
phpunit.xml.dist
复制到phpunit.xml
,并填写您的数据库凭据。 - 运行
composer test
。
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全性
如果您发现了关于安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。
明信片软件
您可自由使用此软件包,但如果它被用于您的生产环境,我们非常感谢您从您的家乡给我们寄一张明信片,并注明您正在使用我们哪个软件包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将在公司网站上发布所有收到的明信片。查看我们的明信片。
致谢
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。