현재 위치: > 최신 기사 목록> ThinkPhp5 Infinitus Classification 구현 세부 설명 및 코드 예제

ThinkPhp5 Infinitus Classification 구현 세부 설명 및 코드 예제

gitbox 2025-08-05

ThinkPhp5로 무한 분류 구현에 대한 기본 소개

Infinitus Classification은 데이터 관리의 일반적인 분류 방법으로, 제품 또는 기사 분류와 같은 다단계 및 다중 소문 시나리오에 적합합니다. 이 기사는 ThinkPhP5 프레임 워크를 통해 완전한 프로세스 및 샘플 코드를 설계하고 구현하는 방법을 설명합니다.

무한 분류의 개념과 적용

Infinitus Classification은 분류가 여러 하위 범주를 가질 수있게하며, 각 하위 카테고리는 또한 레이어-넥 분류 시스템을 형성하기 위해 자체 하위 범주를 계속 가질 수 있습니다. 이 구조는 복잡한 분류 관계를 관리하고 표시하는 데 유연하고 편리합니다.

데이터베이스 테이블 디자인

무한 분류를 구현하려면 일반적으로 다음 필드가 포함 된 분류 테이블을 만들어야합니다.

  • ID : 기본 키, 분류 고유 식별자
  • 이름 : 분류 이름
  • Parent_id : 동일한 테이블의 해당 범주를 가리키는 Parent Class ID

모델 정의

ThinkPhp5에서는 모델 클래스를 사용하여 분류 데이터에서 작동합니다. 다음 예제는 카테고리 모델을 정의하고 직접 서브 클래스를 얻고 모든 서브 클래스를 재귀 적으로 얻는 방법을 구현합니다.

 namespace app\index\model;
use think\Model;
class Category extends Model
{
    // 테이블 이름을 지정합니다(기본 규칙이 충족되지 않은 경우)
    protected $table = 'category';

    // 현재 분류의 직접 하위 범주를 얻으십시오
    public function childrenCategories()
    {
        return $this->hasMany('Category', 'parent_id', 'id')
                    ->order('id', 'asc');
    }

    // 모든 하위 범주를 재귀 적으로 얻습니다,하위 범주를 포함한 하위 범주
    public function allChildrenCategories()
    {
        return $this->childrenCategories()->with('allChildrenCategories');
    }
}

위의 방법은 ThinkPhp의 연관성 모델 기능을 사용하여 유연하게 분류 계층 적 데이터를 촉진합니다.

컨트롤러에서 모델 작업 분류 데이터를 호출합니다

컨트롤러는 모델을 통해 분류 정보를 쿼리하고 작동 할 수 있습니다. 샘플 코드는 첫 번째 수준 분류를 가져오고 Traversal은 하위 클래스를 얻습니다.

 $categories = Category::where('parent_id', 0)->select();

foreach ($categories as $category) {
    $childrenCategories = $category->childrenCategories;
    // 서브 클래싱은 여기에서 처리 할 수 있습니다
}

특정 범주의 모든 하위 범주 (다단계 하위 범주 포함)를 얻어야하는 경우 다음을 사용할 수 있습니다.

 $allChildrenCategories = $category->allChildrenCategories;

이 방법은 더 많은 작업을 계속 수행 할 수있는 연관 모델 모음을 반환합니다.

뷰 레이어 분류 데이터 렌더링

관점에서, 다단계 분류 데이터를 표시하기 위해, 재귀 함수를 통해 계층 적 들여 쓰기 디스플레이를 구현할 수 있습니다.

 function renderCategories($categories, $indent = 0)
{
    foreach ($categories as $category) {
        echo str_repeat('    ', $indent);
        echo $category->name . '<br/>';
        renderCategories($category->childrenCategories, $indent + 1);
    }
}

renderCategories($categories);

또한 ThinkPhP5 템플릿 엔진은 Volist 태그를 사용하여 카테고리의 재귀 렌더링을 지원합니다.

 <ul>
{volist name="categories" id="category"}
    <li>{$category.name}</li>
    {volist name="category.childrenCategories" id="child"}
        <ul>
            <li>{$child.name}</li>
            {include file="category_tree" /}
        </ul>
    {/volist}
{/volist}
</ul>

이 방법은 간단하고 유지하기 쉽고 다단계 분류의 재귀 디스플레이를 실현합니다.

요약

합리적인 데이터 테이블 구조, 모델 관계 정의 및 재귀 디스플레이를 통해 ThinkPHP5는 복잡한 분류 요구를 충족시키기 위해 무한 분류 기능을 효율적이고 유연하게 구현할 수 있습니다. 이 기사의 소개 및 샘플 코드가 귀하의 프로젝트에서 다단계 분류를 구현할 수 있도록 도움이되고 참조 할 수 있기를 바랍니다.