分类学 / lol
Requires
- php: >=5.6.4|^7.0
- cviebrock/eloquent-sluggable: ^4.1.0
- illuminate/database: >=5.3
- illuminate/support: >=5.3
Requires (Dev)
- doctrine/dbal: 2.5.x
- laravel/framework: >=5.3
- mockery/mockery: 0.9.*
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-10-02 17:22:12 UTC
README
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');
将该文章添加到名为 Shoes 的 post_cat。
通常,您现在会在数据库中有两个条目,一个像 ['Sheos','product_cat']
,另一个像 ['Sheos','post_at']
。哦,现在您意识到您拼写错误了 Shoes,现在您必须为每个分类更改两次。
所以我希望在整个应用程序中保持我的 Terms 唯一,这就是为什么我将它们与分类分开,并简单地关联它们的原因。
许可证
根据 MIT 许可证 许可。
作者
由 Alexander Manfred Poellmann 在维也纳和罗马用爱心制作。