unisharp/laravel-taggable

使用独立表或一个表来处理

dev-master 2017-04-13 07:50 UTC

This package is auto-updated.

Last update: 2024-09-15 14:59:07 UTC


README

介绍

此API可以处理独立表中的标签或仅使用一个表

安装Taggable

composer.json

"require" : {
    "unisharp/laravel-taggable" : "dev-master"
}, 
"repositories": {
    "type": "git",
    "url": "https://github.com/UniSharp/laravel-taggable.git"
}

保存它然后

composer update

配置Taggable

  • config/app.php

    • providers
Unisharp\Taggable\TaggableServiceProvider::class,

介绍

  • IndependentTaggable:它使用独立表来保存您的标签

    例如,如果Product模型已存在,您可以使用以下命令生成ProductTag模型

  • IndependentCategorizable:它可以对模型进行分类

标签和分类之间有什么区别?

标签是多对多关系,一个可标记实体可以标记多个标签,同时有多个实体可以属于一个标签。然而,一个实体只能属于一个分类,这是一个一对一的关系,同时有多个实体可以属于一个分类。

生成独立的标签表

我假设Product模型已经存在,并且您想使此模型可标记。如果您没有任何模型,您可以使用以下内置命令来生成它

php artisan make:model Product --migration

并使用以下命令为您的Product生成标签表和模型

php artisan taggable:independent_tag_table Product

您将在app/文件夹下看到ProductTag模型

现在,为您的产品模型添加特质使其可标记。

use Unisharp\Taggable\Traits\IndependentTaggable;

class Product extends Model
{
    use IndependentTaggable
}

使用独立标签

  • 标记您的模型
$product = Product::find(1);
$product->tag('new_tag'); // only string
$product->tag('tag1', 'tag2', 'tag3'); // multi string also work
$product->tag(['tag1', 'tag2']); // array is acceptable
  • 取消标记
$product->untag('new_tag');
$product->untag('tag1', 'tag2', 'tag3');
$product->untag(['tag1', 'tag2']);
  • 获取您的标签
$product->tags // it will return ProductTag back
  • 列出属于指定标签的实体
$tag = ProductTag::find(1);
$tag->entities // it will return Products back

生成独立的分类

就像独立标签一样,您可以通过命令生成独立的分类迁移。

php artisan taggable:independent_category_table Product

它将为Product生成ProductCategory

然后您可以像之前一样为Product添加分类特质。

use Unisharp\Taggable\Traits\IndependentIndependentCategorizable;

class Product extends Model
{
    use IndependentCategorizable;
}

使用独立分类

  • 对您的模型进行分类
$product = Product::find(1);
$product->categorize('free'); // use string
$product->categorize(1); // use product_category id
  • 取消分类
$product->decategorize();
  • 列出您的模型分类
$product->catetory // list its category, it return ProductCategory