trexology5 / taxonomy5
创建和管理不同词汇表中的术语的层级分类
5.0.0
2022-06-03 07:42 UTC
Requires
- php: >=5.4
- illuminate/support: ^5.0|^6.0|^7.0|^8.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: 0.9.*
This package is not auto-updated.
Last update: 2024-09-21 18:59:55 UTC
README
#分类法
此包允许您在Laravel 4和5中创建包含术语的词汇表
安装
Laravel 5
在您的 composer.json
文件中添加
"require": {
"trexology/taxonomy": "3.*"
}
从终端运行
composer update
然后通过打开 app/config/app.php
文件来注册服务提供者和外观
(如果您使用的是laravel 5.5,请跳过此步骤)
'Trexology\Taxonomy\TaxonomyServiceProvider', 'Taxonomy' => 'Trexology\Taxonomy\Facades\TaxonomyFacade',
然后运行以下 artisan 命令以发布配置和迁移
php artisan vendor:publish
然后运行迁移
php artisan migrate
最后,在任何您想要使用分类功能模型的模型中,添加以下特质
<?php class Car extends \Eloquent { use \Trexology\Taxonomy\TaxonomyTrait; }
Laravel 4
在您的 composer.json
文件中添加
"require": {
"trexology/taxonomy": "2.0.*"
}
从终端运行
composer update
然后通过打开 app/config/app.php
文件来注册服务提供者和外观
'Trexology\Taxonomy\TaxonomyServiceProvider', 'Taxonomy' => 'Trexology\Taxonomy\Facades\TaxonomyFacade',
如果您想更改它们,可以发布配置文件
php artisan config:publish trexology/taxonomy
执行数据库迁移以安装所需的表
php artisan migrate --package=trexology/taxonomy
最后,在任何您想要使用分类功能模型的模型中,添加以下特质
<?php class Car extends \Eloquent { use \Trexology\Taxonomy\TaxonomyTrait; }
用法
创建一个词汇表
Taxonomy::createVocabulary('Cars');
检索一个词汇表
$vocabulary = Taxonomy::getVocabulary(1); // Using ID $vocabulary = Taxonomy::getVocabularyByName('Cars'); // Using Name
删除一个词汇表
Taxonomy::deleteVocabulary(1); // Using ID Taxonomy::deleteVocabularyByName('Cars'); // Using Name
向词汇表中添加一个术语
Taxonomy::createTerm($vocabulary->id, 'Audi');
您还可以可选地指定每个术语的父术语和权重,这样您可以将它们分组并保持排序
$german_cars = Taxonomy::createTerm($vocabulary->id, 'German Cars'); $italian_cars = Taxonomy::createTerm($vocabulary->id, 'Italian Cars'); $term_audi = Taxonomy::CreateTerm($vocabulary->id, 'Audi', $german_cars->id, 0); $term_bmw = Taxonomy::CreateTerm($vocabulary->id, 'BMW', $german_cars->id, 1); $term_benz = Taxonomy::CreateTerm($vocabulary->id, 'Mercedes-Benz', $german_cars->id, 2); $term_ferrari = Taxonomy::CreateTerm($vocabulary->id, 'Ferrari', $italian_cars->id, 0);
如果术语包含额外的参数,可以以这种方式添加
$params = [ 'shortname' => "GC", 'type' => "Premium Cars", ]; $german_cars = Taxonomy::CreateTerm($vocabulary->id, 'BMW', $german_cars->id, 0, $params)
使用汽车型号,我可以创建一个新的实例并为它分配一个术语以使其属于
$car = Car::create([ 'model' => 'A3', ]); $car->addTerm($term_bmw->id); $car->addTerm($term_benz->id); $car->removeAllTerms(); // Remove all terms linked to this car $car->addTerm($term_ferrari->id); $car->removeTerm($term_ferrari-id); // Remove a specific term $car->addTerm($term_audi->id); // Get all the terms from the vocabulary 'Cars' That // are attached to this Car. $terms = $car->getTermsByVocabularyName('Cars');
为了检索与给定术语匹配的所有汽车
$audis = Car::getAllByTermId($term_audi->id)->get();
将这些行添加到您的路由文件中,以访问管理术语/词汇的UI
Route::resource('taxonomy', '\Trexology\Taxonomy\Controllers\TaxonomyController'); Route::post('postOrderTerms', '\Trexology\Taxonomy\Controllers\TaxonomyController@postOrderTerms'); Route::resource('terms', '\Trexology\Taxonomy\Controllers\TermsController');
通过在 taxonomy.config.php
文件中更改配置来扩展与您当前管理主题一致的UI