此软件包的最新版本(dev-master)没有可用的许可证信息。

dev-master / 0.0.x-dev 2019-06-17 15:53 UTC

This package is not auto-updated.

Last update: 2024-10-02 17:22:12 UTC


README

Latest Stable Version Total Downloads License

Laravel 分类学

简单的、可嵌套的术语和分类(类似于 WordPress)用于 Laravel 5。

重要通知

此软件包正在开发中,请在使用时小心,并且可以自由地报告您可能遇到的问题或想法!

我们已将此软件包转交给新所有者,因此已更新命名空间为 Lecturize\Taxonomies。配置文件现在是 config/lecturize.php

安装

从您的 composer.json 文件中需要此软件包

"require": {
    "lecturize/laravel-taxonomies": "dev-master"
}

并运行 $ composer update 或两者一起使用 $ composer require lecturize/laravel-taxonomies

接下来,将服务提供程序和(可选)外观添加到您的 config/app.php 文件中

'providers' => [
    // ...
    Cviebrock\EloquentSluggable\ServiceProvider::class,
    Lecturize\Taxonomies\TaxonomiesServiceProvider::class,
];

配置 & 迁移

$ php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
$ php artisan vendor:publish --provider="Lecturize\Taxonomies\TaxonomiesServiceProvider"

这将创建一个 config/sluggable.php、一个 config/lecturize.php 和一个迁移文件,您将需要按以下方式运行

$ php artisan migrate

用法

首先,将我们的 HasTaxonomies 特性添加到您的模型中。

<?php namespace App\Models;

use Lecturize\Taxonomies\Traits\HasTaxonomies;

class Post extends Model
{
    use HasTaxonomies;

    // ...
}
?>
添加一个术语
$model->addTerm('My Category', 'taxonomy')
添加多个术语
$model->addTerm(['Add','Multiple','Categories'], 'taxonomy')
添加一个具有可选父项(分类)和顺序的术语
$model->addTerm('My Category', 'taxonomy', 1, 2)
通过分类获取模型的所有术语
$model->getTerms('taxonomy')
通过(可选)分类获取模型的特定术语
$model->getTerm('My Category', 'taxonomy')
getTerm() 方法的便利方法
$model->hasTerm($term, 'taxonomy')
通过(可选)分类从模型中删除术语
$model->removeTerm($term, 'taxonomy')
从模型中删除所有术语
$model->removeAllTerms()
用多个术语范围模型
$model = Model::withTerms($terms, 'taxonomy')->get();
用单个术语范围模型
$model = Model::withTerm($term, 'taxonomy')->get();

示例

将类别添加到 Eloquent 模型中

$post = Post::find(1);

$post->addTerm('My First Category', 'category');
$post->addTerm(['Category Two', 'Category Three'], 'category');

首先,如果它们尚未存在,此片段将在您的 terms 表中创建三个条目

  • 我的第一个类别
  • 类别二
  • 类别三

然后,它将在您的 taxonomies 表中创建三个条目,将术语与给定的分类“类别”相关联。

最后,它将在您的 pivot 表中将来自您的 taxonomies 表的条目与您的模型(在此示例中为“Post”模型)相关联。

为什么有三个表?

想象一下,您有一个分类名为 post_cat,另一个名为 product_cat,第一个分类您的博客文章,第二个分类您的在线商店中的产品。现在您使用 $product->addTerm('Sheos', 'product_cat'); 将一个产品添加到名为 Shoes 的分类(一个 term)。之后,您想写一篇关于该产品的博客文章,并使用 $product->addTerm('Sheos', 'post_cat'); 将该文章添加到名为 Shoespost_cat

通常,您现在会在数据库中有两个条目,一个像 ['Sheos','product_cat'],另一个像 ['Sheos','post_at']。哦,现在您意识到您拼写错误了 Shoes,现在您必须为每个分类更改两次。

所以我希望在整个应用程序中保持我的 Terms 唯一,这就是为什么我将它们与分类分开,并简单地关联它们的原因。

许可证

根据 MIT 许可证 许可。

作者

Alexander Manfred Poellmann 在维也纳和罗马用爱心制作。