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>
사용:
새 질문 만들기:
권장 사항:
보다 사용자 친화적인 구현을 위해 모델 생성 로직을 각 모델 클래스 내에서 재사용 가능한 함수로 통합하는 것이 좋습니다.
위 내용은 Eloquent를 사용하여 Laravel에서 게시물에 대한 다중 테이블 상속을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!