>  기사  >  데이터 베이스  >  Eloquent를 사용하여 Laravel에서 게시물에 대한 다중 테이블 상속을 구현하는 방법은 무엇입니까?

Eloquent를 사용하여 Laravel에서 게시물에 대한 다중 테이블 상속을 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-25 04:40:30138검색

How to Implement Multi-Table Inheritance for Posts in Laravel Using Eloquent?

Eloquent를 사용하여 Laravel에서 단일 테이블 상속 구현

시나리오:

모델이 있습니다. Post라는 이름을 사용하고 상속을 사용하여 게시물을 기사와 질문의 두 가지 유형으로 나누고 싶습니다.

단일 테이블 상속

단일 테이블 상속에는 모든 유형을 동일한 테이블에 유지하는 것이 포함됩니다. , 이를 구별할 수 있는 열이 있습니다. 이 접근 방식은 더 간단할 수 있지만 모든 유형에 적용할 수 없는 열로 인해 많은 NULL 값이 발생할 수 있습니다.

다중 테이블 상속

다중 테이블 상속은 데이터를 여러 테이블로 분할하는 보다 깔끔한 접근 방식입니다. postable 컬럼은 post의 유형을 나타내며 postable_id는 해당 테이블의 기본 키를 참조합니다.

Implementing Multi Table Inheritance in Eloquent

Post Model :

다형성 관계가 될 Post 모델에 게시 가능한 관계를 추가합니다.

<code class="php">class Post extends Eloquent {
    public function postable() {
        return $this->morphTo();
    }
}</code>

질문 및 기사 모델:

각 게시물 유형에 대해 별도의 모델을 생성하고 게시물 모델과의 관계 설정:

<code class="php">class Question extends Post {
    public function post() {
        return $this->morphOne('Post', 'postable');
    }
}</code>
<code class="php">class Article extends Post {
    public function post() {
        return $this->morphOne('Post', 'postable');
    }
}</code>

사용:

  • 모든 게시물 검색 : Post::all().
  • 모든 질문 검색: Question::all().
  • Post 개체에서 관련 질문 속성에 액세스: $post->postable->question_column .
  • 게시물 유형 결정: get_class($post->postable).
  • 새 질문 만들기:

    • 질문과 질문 모두 만들기 게시 개체.
    • $question->post()->save($post)를 사용하여 연결합니다.

권장 사항:

보다 사용자 친화적인 구현을 위해 모델 생성 로직을 각 모델 클래스 내에서 재사용 가능한 함수로 통합하는 것이 좋습니다.

위 내용은 Eloquent를 사용하여 Laravel에서 게시물에 대한 다중 테이블 상속을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.