该软件包为您的模型提供可标记的行为。安装包后,您唯一要做的就是将HasTags
特征添加到 Eloquent 模型中以使其可标记。
但我们并没有止步于每个包中都有的常规标记功能。 Laravel Tags 附带电池。它开箱即用,支持翻译标签、多种标签类型和排序功能。
您可以在 https://spatie.be/docs/laravel-tags 上找到文档。
以下是一些代码示例:
// 将 HasTags 特征应用于模型use IlluminateDatabaseEloquentModel;use SpatieTagsHasTags;class NewsItem extends Model {使用HasTags; // ...}
// 创建一个带有一些标签的模型$newsItem = NewsItem::create([ 'name' => '文章标题', 'tags' => ['first tag', 'second tag'], //tags will be如果不存在则创建]);// 附加标签$newsItem->attachTag('third tag');$newsItem->attachTag('third tag','some_type');$newsItem->attachTags(['第四个标签', '第五个标签']);$newsItem->attachTags(['第四个标签','第五个标签'],'some_type');//分离标签$newsItem->detachTag('第三个标签');$newsItem->detachTag('第三个tag','some_type');$newsItem->detachTags(['第四个标签','第五个标签']);$newsItem->detachTags(['第四个标签','第五个标签'],'some_type'); // 获取模型的所有标签$newsItem->tags;// 同步标签$newsItem->syncTags(['first tag', 'second tag']); // 此模型上的所有其他标签都将被分离// 与类型同步标签$newsItem->syncTagsWithType(['category 1', 'category 2'], 'categories'); $newsItem->syncTagsWithType(['主题 1', '主题 2'], '主题'); // 检索类型为 $newsItem->tagsWithType('categories'); 的标签 $newsItem->tagsWithType('主题'); // 检索具有任何给定标签的模型NewsItem::withAnyTags(['first tag', 'second tag'])->get();// 检索具有所有给定标签的模型NewsItem::withAllTags(['第一个标签', '第二个标签'])->get();// 检索没有任何给定标签的模型NewsItem::withoutTags(['第一个标签', '第二个tag'])->get();// 翻译标签$tag = Tag::findOrCreate('my tag');$tag->setTranslation('name', 'fr', 'mon tag');$ tag->setTranslation('name', 'nl', 'mijn tag');$tag->save();// 获取翻译$tag->translate('name'); //返回我的名字$tag->translate('name', 'fr'); // 返回 mon 标签(可选 locale 参数)// 通过可标记模型进行方便的翻译 $newsItem->tagsTranslated();// 返回带有 slug_translated 和 name_translated 属性的标签 $newsItem->tagsTranslated('fr');// 返回带有 slug_translated 和 name_translated 属性的标签为指定语言环境设置 slug_translated 和 name_translated 属性 // 使用标记类型$tag = Tag::findOrCreate('tag 1', 'my type');// 标签有 slug$tag = Tag::findOrCreate('yet another tag');$tag->slug; //返回“yet-another-tag”//标签是可排序的$tag = Tag::findOrCreate('my tag');$tag->order_column; //返回 1$tag2 = Tag::findOrCreate('另一个标签');$tag2->order_column; //返回2//操作标签的顺序$tag->swapOrder($anotherTag);//检查模型是否有标签$newsItem->hasTag('first tag');$newsItem->hasTag('first标签', 'some_type');
Spatie 是一家位于比利时安特卫普的网页设计机构。您可以在我们的网站上找到所有开源项目的概述。
我们投入了大量资源来创建一流的开源包。您可以通过购买我们的一款付费产品来支持我们。
我们非常感谢您从家乡寄给我们一张明信片,并注明您正在使用我们的哪种套餐。您可以在我们的联系页面上找到我们的地址。我们在虚拟明信片墙上发布所有收到的明信片。
该包需要 Laravel 8 或更高版本、PHP 8 或更高版本,以及支持json
字段和 MySQL 兼容功能的数据库。
您可以通过 Composer 安装该软件包:
作曲家需要 spatie/laravel-tags
该包将自动注册。
您可以通过以下方式发布迁移:
php artisan 供应商:发布 --provider="SpatieTagsTagsServiceProvider" --tag="tags-migrations"
发布迁移后,您可以通过运行迁移来创建tags
和taggables
表:
php 工匠迁移
您可以选择使用以下方式发布配置文件:
php artisan 供应商:发布 --provider="SpatieTagsTagsServiceProvider" --tag="tags-config"
这是已发布的配置文件的内容:
return [/* * 给定函数在保存之前从标签名称属性生成一个 URL 友好的“slug”。 * 默认为 Str::slug (https://laravel.com/docs/5.8/helpers#method-str-slug) */'slugger' => null, ];
您可以在 https://docs.spatie.be/laravel-tags/v4 上找到该文档。
发现自己在使用该包时陷入困境?发现错误?您对改进laravel-tags
包有一般性问题或建议吗?请随意在 GitHub 上创建问题,我们将尽力尽快解决它。
如果您发现有关安全的错误,请发送邮件至 [email protected],而不是使用问题跟踪器。
将phpunit.xml.dist
复制到phpunit.xml
并填写您的数据库凭据。
运行composer test
。
请参阅变更日志以了解最近更改的更多信息。
详细信息请参阅贡献。
如果您发现有关安全的错误,请发送邮件至 [email protected],而不是使用问题跟踪器。
您可以自由使用这个软件包,但如果它进入您的生产环境,我们非常感谢您从您的家乡给我们寄一张明信片,注明您正在使用我们的哪个软件包。
我们的地址是:Spatie, Kruikstraat 22, 2018 安特卫普, 比利时。
我们在公司网站上发布所有收到的明信片。
弗里克·范德赫滕
所有贡献者
麻省理工学院许可证 (MIT)。请参阅许可证文件以获取更多信息。