"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > **단일 테이블 상속과 Eloquent를 사용한 다중 테이블 상속: Laravel 애플리케이션에 적합한 것은 무엇입니까?**

**단일 테이블 상속과 Eloquent를 사용한 다중 테이블 상속: Laravel 애플리케이션에 적합한 것은 무엇입니까?**

2024년 11월 15일에 게시됨
검색:916

**Single Table Inheritance vs. Multi Table Inheritance with Eloquent: Which is Right for Your Laravel Application?**

Laravel의 Eloquent로 단일 테이블 상속 구현

데이터베이스 모델로 작업할 때 상속은 관련 엔터티의 계층을 정의하는 방법을 제공합니다. 그러나 단일 테이블 상속과 다중 테이블 상속 중에서 선택할 때 후자가 더 효율적이고 유연한 솔루션으로 나타나는 경우가 많습니다.

단일 테이블 상속

개념적으로는 더 간단하지만 단일 테이블 상속을 위해서는 모든 유형의 모든 열을 단일 테이블에 저장해야 하므로 잠재적으로 NULL 값이 급증할 수 있습니다. 이는 특히 대규모 데이터 세트의 경우 데이터베이스 성능에 영향을 미칠 수 있습니다.

Eloquent를 사용한 다중 테이블 상속

다중 테이블 상속에는 단일 테이블을 여러 테이블로 분할하는 작업이 포함됩니다. 특정 모델 유형. Laravel의 Eloquent 프레임워크는 이러한 관계를 원활하게 관리하기 위해 다형성 관계를 제공합니다.

Post 모델

모든 게시물 유형의 기본 클래스인 Post는 공유 열을 나타내고 게시 가능 항목을 정의합니다. 다형성 관계:

class Post extends Eloquent {
    public function postable() {
        return $this->morphTo();
    }
}

질문/기사 모델

질문이나 기사와 같은 각 특정 게시물 유형은 게시물에서 확장되며 기본 모델과 morphOne 관계를 정의합니다.

class Question extends Post {
    public function post() {
        return $this->morphOne('Post', 'postable');
    }
}

사용 예

  • 모든 게시물 검색: $posts = 게시물::all();
  • 모든 질문 검색: $questions = 질문::all();
  • 게시물에서 질문별 열 검색: $question_column = $post->postable->question_column;
  • 확인 게시물 유형: echo '유형: '.get_class($post->postable);

새 질문 만들기

새 질문을 만들려면 게시물 테이블에 연결하여 여러 항목을 유지해야 합니다. -테이블 상속:

$post = new Post();
$post->shared_column = 'New Question Post';
$post->save();

$question = new Question();
$question->question_column = 'My Question';
$question->save();

$question->post()->save($post);

다중 테이블 상속은 더 복잡하지만 더 깔끔한 데이터베이스 구조를 제공하고 성능을 향상하며 복잡한 관계 모델링에 더 큰 유연성을 제공합니다.

Laravel의 다중 테이블 상속에 대한 포괄적인 튜토리얼을 보려면 원래 질문 답변에 제공된 리소스를 참조하세요.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3