Download the PHP package fomvasss/laravel-taxonomy without Composer
On this page you can find all versions of the php package fomvasss/laravel-taxonomy. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fomvasss/laravel-taxonomy
More information about fomvasss/laravel-taxonomy
Files in fomvasss/laravel-taxonomy
Package laravel-taxonomy
Short Description Management of taxonomy in Laravel projects
License MIT
Homepage https://bitbucket.org/fomvasss/laravel-taxonomy
Informations about the package laravel-taxonomy
Development and support of this package is discontinued! Use a better solution fomvasss/laravel-simple-taxonomy
Laravel Taxonomy
Create and manage taxonomy categories (terms) in Laravel Eloquent.
Установка
Publishing resources
После публикации ресурсов, вы можете изменить файл миграции, seeder и переопределить Eloquent-модели термов, словарей.
При использовании переопределенных классов моделей терминов и словарей, нужно указать в конфигу
taxonomy.php
пути этих моделей, иначе система будет работать не так как вы планируете!
Usage
Usage in own models
Для использование в ваших моделях таксономии, нужно подключить трейт
HasTaxonomies
в котором есть relation methods & scope`s:
Relations
termsByVocabulary()
- Связь текущей модели с термамы по указанному словарю (поsystem_name
). Используется для создание связей с термамы нужного словаря в своих моделяхterms()
- Сущность текущей модели "относится" к разным термам (полиморфизм), например: товар в магазине относится к разным категориямterm()
- Сущность имеет один терм (ключ для связи создается в таблице текущей сущности), например: экземпляр автомобиля имеет бренд
Scopes
termsByVocabulary()
- Термы текущей модели по указанному словарю (поsystem_name
). Не путать с связьюtermsByVocabulary()
!byTaxonomies()
- Сущности по указанным термам с соответствующих указанных словарей (ключи по умолчанию:vocabulary.system_name
,term.id
)
Можно создавать в своих моделях, свои, более удобные, методы для связей, на основе метода-связи terms()
.
Например: модель статьи Article
относится к разным термам-категориям Term
со словаря (Vocabulary
) "Категории статей" (vocabularies.id
= 1, vocabularies.system_name
= "article_categories") то метод связи между статьей и ее категориями можно назвать txArticleCategories
и записать как:
Удобно строить связь используя метод
termsByVocabulary()
и указывая системное имя нужного словаря:В ваших методах, для связей с таксономией (термины, словари), рекомендуется использовать как стандарт префикс "tx" (
txArticleCategories
,txArticleStatus
,txBrands
txRegion
,...) - это только рекомендация:)
Например, если метод txArticleCategories()
использовать в модели Article
, то он описывает связь статьи с категориямы.
Все категории статьи можно получить:
Аналогично, можно использовать метод term()
в вашей модели. Например, опишем связь статьи с термом словаря статусов модерации статьи,
при этом укажем поля для связей модели терма-статуса с самой моделью статьи:
где:
txArticleStatus
- название метода для связи сущности-статьи с термом-статусом (можно любое, по правилам Laravel)status
- поле в таблице текущой сущности (статьи), где хранится статус, через которое и установленная связь с термом (articles.status
)system_name
- поле в таблице термов (в нашем случае записано системное имя статуса) (terms.system_name
)vocabulary
- поле в таблице термов, в котором записано систимное название словаря (terms.vocabulary
)article_statuses
- название словаря, записанное в таблице термов (terms.vocabulary
)
Например, если метод txArticleStatus()
использовать в модели Article
, то он описывает статус статьи.
Данные терма-статуса, например имя статуса, можно получить:
В переопределенной модели Term
вы можете описать метод, для получения всех статтей по терму-категории:
И использовать его:
Методы в модели Vocabulary
Связи
terms()
- Словарь имет много термов
Полиморфные связи
vocabulariesByMany()
- Сущность текущей модели "держит" много словарейvocabulariesToMany()
- Сущность текущей модели "относится" к разным словарямtermsByMany()
- Сущность текущей модели "держит" много термовtermsToMany()
- Сущность текущей модели "относится" к разным термам
Методи в модели Term
Связи
txVocabulary()
- Терм "пренадлежит" одному словарю
Полиморфные связи
vocabulariesByMany()
- Сущность текущей модели "держит" много словарейvocabulariesToMany()
- Сущность текущей модели "относится" к разным словарямtermsByMany()
- Сущность текущей модели "держит" много термовtermsToMany()
- Сущность текущей модели "относится" к разным термам (илиterms()
с трейтаHasTaxonomies
)
Scopes в модели Term
byVocabulary()
- Все термы по указанному словарю
Работа с иерархией в терминах таксономии (рекомендации)
- Работа с иерархией в этом пакете построена на "laravel-nestedset"
- Для моделей термов доступны все методы пакета
laravel-nestedset
.
Еще примеры использования:
Links
All versions of laravel-taxonomy with dependencies
illuminate/support Version 5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0
illuminate/database Version 5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0
kalnoy/nestedset Version ^5.0|^6.0