어떻게 Laravel Eloquent 를 사용 하여 무한 분 류 를 개발 합 니까?

개술
우 리 는 어린이 상점 의 분 류 를 보 여 주 는 미니 프로젝트 를 만 들 것 입 니 다.모두 5 급 입 니 다.다음 과 같 습 니 다.

데이터베이스 이전
간단 한 데이터 시트 구조:

Schema::create('categories', function (Blueprint $table) {
 $table->bigIncrements('id');
 $table->string('name');
 $table->unsignedBigInteger('category_id')->nullable();
 $table->foreign('category_id')->references('id')->on('categories');
 $table->timestamps();
});
자신 과 연 결 된 name 필드 만 있 습 니 다.그래서 대부분의 부 급 분류 categoryid=NULL,각 하위 분류 마다 parentid
데이터 시트 데 이 터 는 다음 과 같 습 니 다.

Eloquent 모델 과 관련 관계
우선,app/Category.php 에서 간단 한 hasMany()방법 을 만 들 고 분 류 는 자체 분 류 를 가 질 수 있 습 니 다.

class Category extends Model
{
 public function categories()
 {
 return $this->hasMany(Category::class);
 }
}
좋 은 연극 오 프 닝 본문 이 가장 절묘 한'계책'이다.너 는 이렇게 귀속 관 계 를 묘사 할 수 있다 는 것 을 아니?다음 과 같다.

public function childrenCategories()
{
 return $this->hasMany(Category::class)->with('categories');
}
따라서 카 테 고리:with('categories')를 호출 하면 하급'하위 분류'를 받 지만 카 테 고리:with('children Categories')를 통 해 무한 정 을 실현 할 수 있 습 니 다.
루트 와 컨트롤 러 방법
현재,우 리 는 전례대로 모든 분류 와 하위 분 류 를 표시 하려 고 시도 합 니 다.
routes/web.php 에 다음 내용 을 추가 합 니 다.

Route::get('categories', 'CategoryController@index');
app/Http/Category Controller.php 는 다음 과 같 습 니 다.

public function index()
{
 $categories = Category::whereNull('category_id')
 ->with('childrenCategories')
 ->get();
 return view('categories', compact('categories'));
}
우 리 는 부모 클래스 만 불 러 오고 하위 클래스 를 관계 로 합 니 다.쉽 죠?
보기 와 귀속 서브 보기
마지막 으로 페이지 에 렌 더 링 합 니 다.resources/views/categories.blade.php 파일:

<ul>
 @foreach ($categories as $category)
 <li>{{ $category->name }}</li>
 <ul>
 @foreach ($category->childrenCategories as $childCategory)
 @include('child_category', ['child_category' => $childCategory])
 @endforeach
 </ul>
 @endforeach
</ul>
우 리 는 먼저 최상 위 부모 클래스 를 옮 겨 다 닌 다음 부모 클래스 의 하위 클래스 를 옮 겨 다 닌 다음@include 로 하위 클래스 의 하위 클래스 를 불 러 옵 니 다.
가장 좋 은 부분 은 resources/views/admin/child 입 니 다.category.blade.php 는 재 귀적 으로 자신 을 불 러 옵 니 다.코드 보기:

<li>{{ $child_category->name }}</li>
@if ($child_category->categories)
 <ul>
 @foreach ($child_category->categories as $childCategory)
 @include('child_category', ['child_category' => $childCategory])
 @endforeach
 </ul>
@endif
childcategory.blade.php 내부 에@include('childcategory')따라서 현재 하위 클래스 에 클래스 가 있 으 면 템 플 릿 은 하위 클래스 를 재 귀적 으로 불 러 옵 니 다.
그렇지!저 희 는 무한 등급 의 하위 클래스 를 가지 고 있 습 니 다.-데이터베이스 든 관련 관계 든 보기 든.
이상 은 Laravel Eloquent 를 어떻게 사용 하여 무한 분 류 를 개발 하 는 지 에 대한 상세 한 내용 입 니 다.Laravel Eloquent 를 사용 하여 무한 분 류 를 개발 하 는 데 관 한 자 료 는 저희 의 다른 관련 글 에 주목 하 시기 바 랍 니 다!

좋은 웹페이지 즐겨찾기